(转)WebBrowser控件 实现web打印

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

1.首先引入一个WebBrowser在需要打印的页面,可以直接添加: 
 
到页面,或者使用JavaScript在需要的时候临时添加也可以:

 

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

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




2 .页面设置和打印预览

如下所示,直接调用即可

 

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

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



或者:

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

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



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

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

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

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><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=打印     οnclick="document.all.WebBrowser.ExecWB(6,1)" class="NOPRINT">
     <input type=button value=直接打印 οnclick="printdirect();return false;" class="NOPRINT">
     <input type=button value=页面设置 οnclick="οnclick="printsetpage();return false;" class="NOPRINT">
     <input type=button value=打印预览 οnclick="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   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>

  </tr>
  <tr>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </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 > </td>
  </tr>
  <tr>
    <td > </td>
  </tr>
  <tr>
    <td ><table width="100%"  border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td width="50%" >这样的报表
              对一般的要求就够了。</td>
          <td> </td>
        </tr>
    </table></td>
  </tr>
</table>
</body>
</html> 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值