列印外掛工作原理
背景
由於瀏覽器的安全沙箱機制,Web應用不能直接訪問印表機。而能直接控制印表機,實施精準列印,是很多SAAS軟體,B/S架構軟體,網站等應用的剛需。
我們調研了大量Web/網頁類應用,發現針對Web列印解決方案,主要有如下幾種技術實現方式:
1. 直接呼叫Javascript列印
通過呼叫瀏覽器window物件內建的print方法,彈出列印視窗,使用者點選確認列印。
這是實現網頁列印的最簡單方法,但它的問題是不夠靈活,不能精準控制要列印的頁面內容,無法方便地對印表機進行設定,無法適應一些有複雜列印要求的業務場景。
2. 瀏覽器控制元件列印
通過開發瀏覽器外掛的方式實現列印,例如IE瀏覽器的ActiveX控制元件。
由於此種方法通用性不強,不能適配市面上的主流瀏覽器,如chrome,edge等,已被淘汰。
3. 本地代理
還有一種方式是在本地安裝代理程式,代理程式會啟動一個服務(通常是http服務),來接受列印請求,實施列印。
網頁通過跨域技術,提交列印任務並接收反饋。此種方式是一種優秀的解決方案,廣泛應用於類似場景的Web應用中。
它的優勢是適配性強,理論上適用於所有瀏覽器。此種方式需要使用者下載安裝代理程式。
設計思路
能加加網頁列印外掛的核心理念,就是為開發人員提供簡單可靠的列印解決方案。
經過多方技術調研與分析,我們採用的是第三種方案:本地代理方式。
我們使用C++作為開發語言,軟體執行速度快,穩定性好,精心設計的軟體介面簡單易用。
執行場景
說明:
- 網頁頁面通過JS API檢測代理程式是否啟動,如沒有,提示使用者啟動;
- 如沒有安裝代理程式,使用者下載安裝代理程式;
- 安裝完成後,使用者啟動代理程式,網頁自動檢測到代理程式,隱藏提示並切換到正常內容;
- 網頁應用執行JS API傳送列印任務,並監聽列印完成事件;
- 代理程式進行列印,併發回列印完成事件;
- 網頁應用收到列印完成事件,列印完成。
相關文章
- 揭祕webpack外掛的工作原理Web
- Android外掛化原理(一)Activity外掛化Android
- Babel外掛原理與配置Babel
- 白話外掛框架原理框架
- MyBatis-07-外掛原理MyBatis
- Web列印外掛實現思路(C#/Winform)WebC#ORM
- [外掛擴充套件]工作時間軸(新外掛後臺)套件
- babel原理及外掛開發Babel
- 外掛化知識梳理(10) Service 外掛化實現及原理
- Eclipse 工作流外掛地址Eclipse
- 深入淺出Service外掛化原理
- Babel 外掛原理的理解與深入Babel
- webpack4外掛及工作流程Web
- 前端網頁列印外掛print.js(可匯出pdf)前端網頁JS
- 安卓外掛化框架Shadow原理分析安卓框架
- 【MyBatis原始碼分析】外掛實現原理MyBatis原始碼
- Android外掛化原理解析——概要Android
- 工作中常用的vscode外掛VSCode
- 貢獻給工作狂的chrome外掛Chrome
- wordpress外掛開發01-原理講解
- Android 外掛化原理入門筆記Android筆記
- Android 外掛化原理解析(1):概要Android
- 使用Mybatis外掛列印SQL詳細內容及執行時間MyBatisSQL
- idea 使用外掛,提高工作效率Idea
- 7個深度工作的Visual Studio 外掛
- 探索 babel 和 babel 外掛是怎麼工作的Babel
- Android外掛化原理分析(基於Neptune框架)Android框架
- Activity外掛化原理第二種方案:Hook IActivityManagerHook
- SAP印表機原理、列印配置及列印操作
- [外掛擴充套件]書架外掛(新外掛後臺)套件
- 外掛 檔案上傳外掛 ajaxfileupload.js外掛JS
- Flannel和Calico網路外掛工作流程對比
- Mybatis外掛擴充套件以及與Spring整合原理MyBatis套件Spring
- Activity外掛化原理第一種方案:Hook InstrumentationHook
- Taro cli流程和外掛化機制實現原理
- Mybatis第三方PageHelper分頁外掛原理MyBatis
- jQuery LightBox外掛原理的簡單實現jQuery
- 外掛