web 实现大量打印

JavaScript014

web 实现大量打印,第1张

问题描述:

在B/S项目中需要打印大量的图片,我们使用window.print,但是当数据量大至上万的时候,将图片加载出来需要一些时间,加载出来之后打印,如果用户关闭了打印界面会导致打印页的缺失。

解决思路:

1.IE,使用ActiveX控件,非IE,使用Flash插件。这种思路不同的浏览器开发方式不一样,IE/FF/GROME

2.开发一个exe,客户端安装到本地服务,使用HTTP通讯方式。通过JS发送HTTP请求给本地的服务,本地服务起一个小型的HTTP server接收请求,然后返回数据,JS解析,显示在UI上。比如将打印的参数传值到本地服务,本地服务去调用打印机,使浏览器资源得到释放。

我们使用第二种思路。

尝试了以下方法:

1.HttpPrinter

采用原因 免费  ,OME费用很便宜的,而且不限制时间和数量.还可以购买源码的。

HttpPrinter.com

2.葡萄城的ActiveReports

中有B / s端的打印使用window.print实现

https://demo.grapecity.com.cn/ActiveReports/ASPNET/ControlExplorer/Viewers/Default.aspx?category=1001&action=14

另外有C / S端的打印,无法与浏览器交互,但是可以去改进

https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=48785&extra=page%3D1

3. Lodop分为收费版与免费版

 (1)使用Lodop插件,需要客户端安装一个服务,服务的端口默认是8000或18000

 (2)如何购买和使用打印控件的Lodop的注册号

http://blog.sina.com.cn/s/blog_721e77e50100nfzs.html

 (3)Lodop样例演示

http://www.lodop.net/LodopDemo.html

考量问题:

(1)免费版有水印

4. JCP分为收费版与免费版

  安装程序需要替换

  网官   http://printfree.jatools.com/

 考量问题:

免费版只适合于IE浏览器

图片需要渲染到页面,打印时释放浏览器资源可以做其他操作

收费版jatoolsPrint支持大部分浏览器

5.jquery打印

底层是window.print方法

最后考量,我们决定将的ActiveReports中的C / S端程序打包成EXE,利用自定义协议实现打开本地exe服务,使用HTTP方式实现浏览器与本地服务的通讯。

用这个Lodop插件  兼容IE Chrome Firefox ····

支持横向打印,票据打印,修改页眉页脚等等,定制性很强大··

关键是免费的·做Web打印神器,

LODOP.SET_PRINT_PAGESIZE(1, 4500, 1600,"证书打印")//第一个参数设置为1 是横向,2是纵向