(转)WebBrowser控件 实现web打印

我主要使用了IE内置的WebBrowser控件,无需用户下载和安装。WebBrowser有很多功能,除打印外的其他功能就不再赘述了,你所能用到的打印功能也几乎全部可以靠它完成,下面的问题就是如何使用它了。先说显示后打印,后面说后台打印。

1.首先引入一个WebBrowser在需要打印的页面,可以直接添加: 
 

<object id="WebBrowser" classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height="0" width="0">
</object>


到页面,或者使用JavaScript在需要的时候临时添加也可以:

 


document.body.insertAdjacentHTML("beforeEnd"

    
"<object id=\"WebBrowser\" width=0 height=0 \

classid
=\"clsid: 8856F961-340A-11D0-A96B-00C04FD705A2\">");


2 .页面设置和打印预览

如下所示,直接调用即可

 


document.all.WebBrowser.ExecWB(6,6)   直接打印
document.all.WebBrowser.ExecWB(
8,1)   页面设置
document.all.WebBrowser.ExecWB(
7,1)   打印预览



或者:


execScript("document.all.WebBrowser.ExecWB 7, 1","VBScript");



3 隐藏不打印的页面元素和分页

 CSS 有个Media 属性,可以分开设置打印和显示的格式。

如 <style media="print" type="text/css"> …</style> 中间的格式将只在打印时起作用,不会影响显示界面。
所以可以设定


<style media="print" type="text/css">
.Noprint{display:none;}
.PageNext{page
-break-after: always;}
</style>


然后给不想打印的页面元素添加: class="Noprint" ,那就不会出现在打印和打印预览中了。
想分页的地方添加:  <div class="PageNext"></div> 就可以了。

 

 

 

 

<html>

<head>
<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
<title>***WSOFT.NET***</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">


<!--media=print 这个属性可以在打印时有效-->
<style media=print>
    .Noprint{display:none;}
    .PageNext{page-break-after: always;}
</style>


<style>
    body,td,th
    {
         font-size: 12px;
    }
    .tdp
    {
         border-bottom: 1 solid #000000;
         border-left:  1 solid #000000;
         border-right:  0 solid #ffffff;
         border-top: 0 solid #ffffff;
   }
   .tabp
   {
         border-color: #000000;

         border-collapse:collapse;
   }
}

</style>

<script type="text/javascript">
        function printdirect() { try { document.all.WebBrowser.ExecWB(6, 6); } catch (e) { window.print(); } } // 直接打印
        function printsetpage() { try { document.all.WebBrowser.ExecWB(8, 1); } catch (e) { alert('您的浏览器不允许使用WebBrowser打印控件,所以不能在此进行页面设置,\n请在菜单:文件-页面设置中设置。'); } } // 页面设置
</script>

</head>

<body >
  <OBJECT  id=WebBrowser  classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2  height=0  width=0 VIEWASTEXT>
  </OBJECT>

<div class="Noprint">
     <input type=button value=打印     onclick="document.all.WebBrowser.ExecWB(6,1)" class="NOPRINT">
     <input type=button value=直接打印 onclick="printdirect();return false;" class="NOPRINT">
     <input type=button value=页面设置 onclick="onclick="printsetpage();return false;" class="NOPRINT">
     <input type=button value=打印预览 onclick="document.all.WebBrowser.ExecWB(7,1)" class="NOPRINT">

</div>
 <br/>
<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr align="center">
    <td colspan="5"><font size="3">北京市人民医院结帐费用报表</font></td>
  </tr>
  <tr>
    <td>汇总人次 5</td>
    <td>费用合计 15853.12</td>
    <td>统计日期 </td>
    <td>制表人 Super</td>
    <td>制表日期:2005-03-08</td>
  </tr>
</table>
 


<table width="90%" border="1" align="center" cellpadding="2" cellspacing="0" bordercolor="#000000"  class="tabp">
  <tr>
    <td   >姓名</td>
    <td   >住院号</td>
    <td   >科室</td>
    <td   >结帐日期</td>
    <td   >出院日期</td>
    <td   >费用合计</td>
    <td   >医保交易费用</td>
    <td   >分类给付费用</td>
    <td   >非医保交易费</td>
    <td   >&nbsp;</td>
    <td   >&nbsp;</td>
    <td   >&nbsp;</td>
    <td   >&nbsp;</td>
    <td   >&nbsp;</td>
    <td   >&nbsp;</td>

  </tr>
  <tr>
    <td   >&nbsp;</td>
    <td   >&nbsp;</td>
    <td   >&nbsp;</td>
    <td   >&nbsp;</td>
    <td   >&nbsp;</td>
    <td   >&nbsp;</td>
    <td   >&nbsp;</td>
    <td   >&nbsp;</td>
    <td   >&nbsp;</td>
    <td   >&nbsp;</td>
    <td   >&nbsp;</td>
    <td   >&nbsp;</td>
    <td   >&nbsp;</td>
    <td   >&nbsp;</td>

  </tr>
</table>
<hr align="center" width="90%" size="1" noshade class="NOPRINT" >
<!--分页-->
<div class="PageNext"></div>
<table width="90%" border="1" align="center" cellpadding="2" cellspacing="0" bordercolor="#000000"  class="tabp">
  <tr>
    <td >第2页</td>
  </tr>
  <tr>
    <td >看到分页了吧</td>
  </tr>
  <tr>
    <td >&nbsp;</td>
  </tr>
  <tr>
    <td >&nbsp;</td>
  </tr>
  <tr>
    <td ><table width="100%"  border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td width="50%" >这样的报表
              对一般的要求就够了。</td>
          <td>&nbsp;</td>
        </tr>
    </table></td>
  </tr>
</table>
</body>
</html>

posted on 2010-03-04 15:23  黑子范  阅读(996)  评论(0编辑  收藏  举报

导航