zoukankan      html  css  js  c++  java
  • 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的时候,点呀点,点到了这个设置,觉得还是蛮有用的,分享给大家吧

     点这里的更多设置

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

  • 相关阅读:
    jsp生成xml文件示例
    jsp分页显示
    Spring AOP学习笔记
    让leeon不再眷念马桶——书评《精通正则表达式》
    用JSP实现上传文件的两种方法
    oracle sql性能优化
    Iron Speed Designer 4.2.2学习
    再议《JavaScript代码优化一例》
    有关《大道至简》的几点讨论~
    有源则至清——我读《移山之道》
  • 原文地址:https://www.cnblogs.com/LcxSummer/p/9284095.html
Copyright © 2011-2022 走看看