Ⅰ web 實現大量列印
問題描述:
在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方式實現瀏覽器與本地服務的通訊。