• (转)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>

  • 相关阅读:
    利用合成数据进行时间序列分类的数据扩充方法
    基于 KubeSphere CI/CD 将 Spring Boot 项目发布至 Kubernetes
    矩阵白化
    delphi 过滤开头 结尾 全部 空格的函数
    delphi CopyFileProgressBar 拷贝文件显示进度条
    delphi 分享三个随机字符串
    delphi IsIPAdress 非正则表达式验证IP的方法
    delphi PosAnsi
    delphi公用函数
    Delphi中break,exit,abort跳出循环的比较
  • 原文地址:https://www.cnblogs.com/fcsh820/p/1678353.html
Copyright © 2020-2023  润新知