列印外掛工作原理

見血飛發表於2020-11-29

背景

由於瀏覽器的安全沙箱機制,Web應用不能直接訪問印表機。而能直接控制印表機,實施精準列印,是很多SAAS軟體,B/S架構軟體,網站等應用的剛需。

我們調研了大量Web/網頁類應用,發現針對Web列印解決方案,主要有如下幾種技術實現方式:

1. 直接呼叫Javascript列印

通過呼叫瀏覽器window物件內建的print方法,彈出列印視窗,使用者點選確認列印。

這是實現網頁列印的最簡單方法,但它的問題是不夠靈活,不能精準控制要列印的頁面內容,無法方便地對印表機進行設定,無法適應一些有複雜列印要求的業務場景。

2. 瀏覽器控制元件列印

通過開發瀏覽器外掛的方式實現列印,例如IE瀏覽器的ActiveX控制元件。

由於此種方法通用性不強,不能適配市面上的主流瀏覽器,如chrome,edge等,已被淘汰。

3. 本地代理

還有一種方式是在本地安裝代理程式,代理程式會啟動一個服務(通常是http服務),來接受列印請求,實施列印。

網頁通過跨域技術,提交列印任務並接收反饋。此種方式是一種優秀的解決方案,廣泛應用於類似場景的Web應用中。

它的優勢是適配性強,理論上適用於所有瀏覽器。此種方式需要使用者下載安裝代理程式。

設計思路

能加加網頁列印外掛的核心理念,就是為開發人員提供簡單可靠的列印解決方案。

經過多方技術調研與分析,我們採用的是第三種方案:本地代理方式。

我們使用C++作為開發語言,軟體執行速度快,穩定性好,精心設計的軟體介面簡單易用。

執行場景

圖

說明:

  • 網頁頁面通過JS API檢測代理程式是否啟動,如沒有,提示使用者啟動;
  • 如沒有安裝代理程式,使用者下載安裝代理程式;
  • 安裝完成後,使用者啟動代理程式,網頁自動檢測到代理程式,隱藏提示並切換到正常內容;
  • 網頁應用執行JS API傳送列印任務,並監聽列印完成事件;
  • 代理程式進行列印,併發回列印完成事件;
  • 網頁應用收到列印完成事件,列印完成。

https://www.nengjj.com/web-print-help/309

相關文章