js打印功能

曾经在上海的时候有开发过服务端连打印机打印文件的功能,用的是java调用服务机上连接的打印机打印pdf文件

String cmd = "cmd.exe /C start acrord32 /P /h " + pdfPath;

Runtime.getRuntime().exec(cmd);

 

详见:

Java调用cmd的静默打印PDF方法

https://blog.csdn.net/ycb1689/article/details/7530210

 

现在要做的是客户端调用浏览器的打印功能,利用客户端连接的打印机打印页面区域,采用的是jquery封装好的打印插件 jQuery.print.js ,只能说人家都封装好了,拿来用便可以了,没什么难点,下面是插件的网址

http://www.jq22.com/jquery-info15650

 

但是引用到我的项目中后,指定打印的区域为整个table,也就是把table对象抛给插件去封装,然后打印,但是打印预览的结果不太理想,当table显示的行数过多,比如50多行的时候,一页明显打不完,但是打印预览的时候总是显示总页数为1

这里选的也是打印全部页码,并没有指定只打印第一页。一开始以为是插件在封装我给的table对象的时候是不是漏掉了部分行,还特意设置在新窗口中打印,并在打印完成后不关闭新窗口,就是为了看看插件封装的table完不完整,后来发现也是完整的

设置在新窗口中打印,就设置下面一个iframe参数为false就可以了

 

 修改代码,设置打印完成后或者取消打印后,新窗口不关闭。顺着代码调用的入口,找到打印完成后关闭新窗口的代码,注释掉下面一行代码即可

页面中显示的table是完整的,于是我在页面直接右键,选择打印功能,发现也是只打印一页

而其他页面直接点击右键打印的时候却是整个页面打印,比如下面这个,需要打印11页

这样一来问题就确定是出在自己项目了,突然就像打通了任督二脉,记得曾经设置过项目页面中body的width和height都为100%,一查看,果不其然

问题就出在这里,是插件封装的时候应用了这个样式,所以永远都只会打印一页。那么只要再封装的时候冲掉这个样式,问题就迎刃而解了

这样问题就解决了。

最后,还发现一个可以去掉页眉和页脚的设置,哈哈,这都不算什么大发现了,就是在改这个只能打一页的bug的时候,点呀点,点到了这个设置,觉得还是蛮有用的,分享给大家吧

 点这里的更多设置

里面有个页眉和页脚的设置,取消勾选就没有页眉和页脚了

 

posted @ 2018-07-09 15:38  1156740846  阅读(2667)  评论(1编辑  收藏  举报