javascript 调用浏览器的打印方法。并设置打印为横向打印

最近做一个简单的打印功能,要使用JavaScript调用浏览器的打印功能。并设置打印为横向打印:
为了适应A4纸的宽和高这里设置:

body{margin:0 auto;    
          width: 1010px;
          height: 369px;
     }

为了在页面做一个打印的按钮,但是在真实打印的时候该按钮又不能显示在打印页面上,这里我加了两个标识性的注释

<!--begin--><!--end-->

并写了一个打印的方法,在调用该方法是截取掉打印中不需要显示的内容,只包括标识性标签中的内容:

<script type="text/javascript">
            function printit(){
                if (confirm('确定打印吗?')){
                    try{
                        print.portrait   =  false    ;//横向打印 
                    }catch(e){
                        //alert("不支持此方法");
                    }
                     var bdhtml=window.document.body.innerHTML;//获取当前页的html代码    
                        var sprnstr="<!--begin-->";//设置打印开始区域    
                        var eprnstr="<!--end-->";//设置打印结束区域    
                        var prnhtml=bdhtml.substring(bdhtml.indexOf(sprnstr)); //从开始代码向后取html    
                        var prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));//从结束代码向前取html    
                        window.document.body.innerHTML=prnhtml;    
                        window.print();    
                        window.document.body.innerHTML=bdhtml;    
                }

            }
        </script>

实例展示:

<style type="text/css">

     body{margin:0 auto;    
          width: 1010px;
          height: 369px;
          }
</style>

    <head>
    <title>打印标题</title>
        <script type="text/javascript">
            function printit(){
                if (confirm('确定打印吗?')){
                    try{
                        print.portrait   =  false    ;//横向打印 
                    }catch(e){
                        //alert("不支持此方法");
                    }
                     var bdhtml=window.document.body.innerHTML;//获取当前页的html代码    
                        var sprnstr="<!--begin-->";//设置打印开始区域    
                        var eprnstr="<!--end-->";//设置打印结束区域    
                        var prnhtml=bdhtml.substring(bdhtml.indexOf(sprnstr)); //从开始代码向后取html    
                        var prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));//从结束代码向前取html    
                        window.document.body.innerHTML=prnhtml;    
                        window.print();    
                        window.document.body.innerHTML=bdhtml;    
                }

            }
        </script>
        <style type="text/css">
            .ipt{
                cursor: pointer;
            }
        </style>
    </head>

   <body>
            <OBJECT id="WebBrowser"  classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height=0 id=wb name=wb width=3></OBJECT>      
            <div id="kpr" style="margin:30px">      
            <input class="ipt" type="button"  value="打印"           onclick ="javascript:printit();">      
            <input class="ipt" type="button"   value="关闭"           onclick ="javascript:window.close();">    
            </div>
     <!--begin-->
            <h3>打印标题</h3>
           <table>
               <tr>
                  <td>内容</td>
                  <td>内容</td>
                  <td>内容</td>
                  <td>内容</td>
                  <td>内容</td>
                  <td>内容</td>
                  <td>内容</td>
                  <td>内容</td>
               </tr>
               <tr>
                  <td>内容2</td>
                  <td>内容2</td>
                  <td>内容2</td>
                  <td>内容2</td>
                  <td>内容2</td>
                  <td>内容2</td>
                  <td>内容2</td>
                  <td>内容2</td>
               </tr>
           </table> 
    <!--end-->
    </body>

预览:
页面预览时显示打印和关闭按钮

打印效果,点击打印按钮–>确定:
打印是不显示两个按钮

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
可以使用`window.print()`方法来实现浏览器调用打印打印文件流的功能,但是无法设置为静默打印。如果需要实现静默打印,可以使用 ActiveX 控件或者 WebBrowser 控件来实现。以下是一个使用 ActiveX 控件的例子: ```html <html> <head> <script type="text/javascript" src="jquery.min.js"></script> <script type="text/javascript"> function doPrint() { var acro = new ActiveXObject("AcroPDF.PDF"); acro.src = "test.pdf"; acro.printAll(); } </script> </head> <body> <button onclick="doPrint()">Print</button> </body> </html> ``` 在以上示例中,我们通过创建 ActiveX 对象 `AcroPDF.PDF`,并指定要打印的文件路径,然后调用 `printAll()` 方法实现打印。请注意,这种方法只能在 IE 浏览器中使用,而且需要用户在浏览器设置中启用 ActiveX 控件。因此,这种方法不是很推荐使用。 如果需要实现跨浏览器的静默打印功能,可以使用 WebBrowser 控件。以下是一个使用 WebBrowser 控件的例子: ```html <html> <head> <script type="text/javascript" src="jquery.min.js"></script> <script type="text/javascript"> function doPrint() { var webBrowser = document.getElementById("webBrowser"); webBrowser.src = "test.pdf"; webBrowser.execWB(6, 1); } </script> </head> <body> <object id="webBrowser" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" style="display:none;"></object> <button onclick="doPrint()">Print</button> </body> </html> ``` 在以上示例中,我们创建了一个 WebBrowser 控件,并指定要打印的文件路径,然后调用 `execWB()` 方法实现打印。请注意,这种方法需要用户在浏览器设置中启用 ActiveX 控件,并且只能在 IE 浏览器中使用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值