跨瀏覽器的打印程序的設計
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
我在多年之前設計過一個ActiveX的打印控件,當時在市面上找不到符合自己要求的打印控件,所以就按照自己的思路設計開發了一個打印控件,并共享出來,沒想到得到許多同行朋友的認可,大家用起來覺得還挺不錯的。 已經過了許多年,瀏覽器已經由當年的IE或以IE為內核的國產瀏覽器為主流,轉為以Google的Chrome瀏覽器或以Chrome為內核的國產瀏覽器為主流了,ActiveX已經成為昨日黃花。我本想這么多年過去了,各種技術都是日新月異的,作為打印應該早就不是什么問題,可到了自己做項目開發時,需要用到比較復雜一點的打印時,去網上找一找,才發現打印這一塊的技術還是沒有多大的發展,排在百度搜索前幾名的所謂輕打印控件,還是和許多年前一樣的有以下幾個毛病:一是報表設計繁瑣,既當爹又當媽的,既要用Javascript定義報表的格式,又要組織報表的數據,一個操作窗口,需要自己先計算好各顯示的坐標,然后再一一的畫出來,這樣的報表設計用起來使人發狂,一二個報表還可以勉強對應,要是多做幾個就累死人了,而且以后維護修改也很麻煩。二是打印的數據量稍大一點,比如一次打印幾十頁數據,瀏覽器就卡死在那里,半天都沒有反應,打印一個大一點的報表,把用戶和公司的技術服務都快逼瘋了。三是所謂的HTML打印,因為瀏覽器頁面和紙張,在版面和精度控制方面的差異,導致網頁顯示和實際打印的效果差很遠,而且因為頁面一般是前端程序員通過JS、CSS等技術設計出來的,而報表開發這個一般是屬于后端程序員的工作,這樣硬是把后端開發的工作推給前端,還很難把報表這一塊做好。 我想如其用著這些蹩腳的東西,還不如把自己多年前設計的打印控件進行升級,讓其支持所有的主流瀏覽器。Chrome注重安全性、健壯性和用戶體驗,而打印程序需要管理用戶本地的打印機,作為瀏覽器中渲染執行的網頁程序,是無法直接控制打印機,所以這個必須通過應用程序來進行精準打印。所有的瀏覽器都可以通過URL Protocol協議來調用本地程序。 這個跨瀏覽的打印控件的總體設計思路是:在服務端把打印模板設計好,把所需要打印的數據組織好,再生成一個臨時文件的URL,然后把此URL作為參數通過URL Protocol協議去調用本地的打印控件,打印控件下載此臨時文件,再解析出打印模板和打印數據,最后進行直接打印或打印預覽。 我按照此思路,編寫了服務端的類庫和打印控件,服務端的類庫是完全開源的,提供所有的源代碼,目前的源代碼版本有Java、C#、PHP,對于其它語言,我暫時還沒有用過,有需要的朋友可以自己完善一下。要集成到自己的項目中,也是比較簡單的,我提供了詳細的說明文檔,一般只需要引用2個源文件就可以直接調用其中的函數了。 對于打印控件,因為涉及HTTP、JSON等技術,這個C#比C++更快開發,所以我采用.net framework 3.5進行開發,這個框架是Win 7系統自帶,對于Win 7和Win 10 的電腦無需再次安裝,對于古老的XP則需要先安裝此框架。 開發了此打印控件之后,除了自己的項目使用之后,我共享給同行朋友使用,他們一致反應,控件穩定好用,兼容Windows系統下的所有瀏覽器;速度快,打印預覽100頁,也只需要5秒鐘;設計效率高,通過簡單的拖放就可以設計一份完美的中國式報表; 還支持用戶自主在線設計報表等。 有需要的朋友,請加入QQ群:218392762 或者請直接Q我:12988672 或者請加我的微信:dong0738
【轉】https://www.cnblogs.com/dong0738/p/10990842.html 該文章在 2023/8/11 18:39:07 編輯過 |
關鍵字查詢
相關文章
正在查詢... |