欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js实现页面打印

程序员文章站 2022-06-19 13:33:46
...

1、由来

在项目需求中,有需要实现的打印当前页面的方法,问题是:当鼠标右键打印时,由于多页面组合,导致页面重叠打印,很显然不符合要求。故多方查找找到如下方法,仅供参考。

2、方法

2.1、jsp页面中处理

在jsp页面中添加打印按钮,并填充单机时间:打印

<button type="button" onclick="javascript:window.print();" class="btn">打印</button>

2.2、js文件中添加方法

依然是上面的按钮,只是点击事件在js页面中
下面这个方法,需要支持标签<//iframe>?
在jsp页面上需要添加第一行的代码

<iframe id="piframe" style="display:none"></iframe>


function print(){
var pHTML = $("#divID").html;
var piframe=$("#piframe")[0];
var pwindow = piframe.contentWindow;
pwindow.document.close();
pwindow.document.write(pHTML);
pwindow.print():
}

另外一个方法更上一个相似,只是更通用一些

var pHTML=document.getElementById("divID").innerHTML;
var wind = window.open("","newwindow","height=1000,width=200,top=100,left=100.toobar=no,menubar=no,menubar=no,scrollbars=yes,resizable=yes,location=no,status=yes");
wind.document.title='打印预览';
wind.document.body.innerHTML=pHTML;
wind.print();

3、此次遇到的最大的也是最坑的问题

我们是从PDF文件中取得数据框架,然后根据页面输入填充数据,最后生成一个HTML文件。
以上三种方法,经过测试都能从HTML文件中取到数据,但当走到打印预览页面,就是空白纸,这问题一度使我怀疑人生。
一次偶然的机会同事(感谢同事)看了一眼我从HTML中获取的数据,然后告诉我由于数据中的一行配置,导致我无法从打印中获取数据。

@media print{body{display:none}}

这是在生成HTML文件时添加的,目的是拒绝打印,来达到保密的效果,这对我来说简直了。。。

相关标签: jsp