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