我在多年以前設計過一個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.net
報表預覽、編輯和開發包下載的網址: http://www.lc-simple.com/PirntTest/設計