19
2020
03

Javascript实现window.print打印网页中定义的部分内容

正常情况下的打印是使用 window.print(); 直接整页打印,但如果需要打印网页中定义的部分内容,则可使用如下的方法:

1、在页面的代码头部处加入JavaScript:

<script language=javascript>   
    function doPrint() {   
        bdhtml=window.document.body.innerHTML;   
        sprnstr="<!--startprint-->";   
        eprnstr="<!--endprint-->";   
        prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17);   
        prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));   
        window.document.body.innerHTML=prnhtml;   window.print();   
    }   
</script>


也就是在需要用户打印保存的正文所对应的html处附加上。同时,如果采用小偷程序获得远程数据并需打印,可将此等数据置于该定义标签之内即可。

3、截取内容部分已完成,现在加个“打印”的链接:  

<a href="#" onClick="doPrint()">打印</a>

完整HTML示例:

<!DOCTYPE html>
<html>
<head>    
<title></title>
<meta charset="utf-8">
</head>
<script type="text/javascript">
    function my_print(){    //直接调用浏览器打印功能   
        bdhtml=window.document.body.innerHTML;    //定义打印区域起始字符,根据这个截取网页局部内容        
        sprnstr="<!--startprint-->"; //打印区域开始的标记   
        eprnstr="<!--endprint-->";   //打印区域结束的标记     
        prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17);         
        prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));    //还原网页内容        
        window.document.body.innerHTML=prnhtml;      //开始打印   
        window.print();}
</script>
<body>    
<a href="#" onClick="my_print();" ><span> 打  印</span></a><br>        
<!--startprint-->        
<img src="test.jpg" style="height: 150px;width:150px"/>        
<!--endprint-->
</body>
</html>

打印带滚动条的table时,出现了只显示一张的情况

<div class="container query-table" id="query-table">    
    <div class="table-responsive tableResponsive" id="queryTable" style="overflow: scroll;height: 100%;">        
        <!--startprint-->        
        <table class="table text-center" id="printTable" style="border-left: none;">            
            <thead class="tableHeader"></thead>            
            <tbody class="tableBody"></tbody >        
        </table >        
        <!--endprint-->    
    </div>
</div>

解决办法:

/*dom显示高度的设置*/
html, body {height: 100%;}
#query-table {height: 100%;}
#queryTable {height: 100%;}
/*打印高度的设置*/
@media print {html, body {height: inherit;}
#query-table {height: inherit;}
#queryTable {height: inherit !important;}}


实现分页打印:

window.print() 实现分页打印主要通过样式来控制,样式如下:

style="page-break-after:always"

如果打印两页只需要给第一页加上该样式即可,不需要给第二页加上,否则第二页在打印时会多走一张空白纸,具体代码如下:

<div class="container a4-endwise" id="page1" style="page-break-after:always;">第一页被打印的内容</div>
<div class="container a4-endwise" id="page2" >第二页被打印的内容</div>


去掉页眉页脚及打印链接:

<style media="print">
@page {size: auto;/* auto is the initial value */margin: 0mm; /* this affects the margin in the printer settings */}
</style>


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。