一 基於Web的打印方案比較分析--------------------------------
基於web的套打,難度在於要將瀏覽器中呈現的html,精確地打印到票據中,並且可以實現對分頁位置的控制。下面就ie瀏覽器所能採用的套打解決方案,來個彙總分析,但願對你們有所幫助。
1、瀏覽器的打印功能菜單
這種方案的優點是不須要對瀏覽器做任何擴充,是最簡單的辦法,但問題也最多,如:
不能精確分頁。瀏覽器通常是根據用戶設置的頁面大小,web頁面的內容多少,來自行決定分頁位置,程序員很難控制。會有頁腳頁眉干擾。
不能準確對齊邊邊距及打印文字。
不能解決連續打印。好比,不是僅打印一張票據,而是連續一次打印若干個票據。
2、使用webbrowser控件+ javascript
這實際上,是瀏覽器打印功能菜單的一種程序調用,與打印功能菜單沒什麼兩樣。分頁的問題仍然存在,只不過,可讓用戶不用去點菜單,直接在網頁中的一個按鈕,或一個連接裏面調用罷了。
三 、使用print css
這是一種最理想的實現web套打的方法。這種方法經過在html文檔中,嵌入打印相關的css樣式,來實現對html文檔輸出打印的控制,好比設置紙張大小,紙張縱橫方向,打印邊距,分頁等。顯而易見,這種方式成本小,不須要下載任何插件,並且跨平臺性很是好。print css推出已經有些時日,但遺憾的是,至今沒有一個廠商的瀏覽器很好地實現了這些標準,這使得程序員目前還不能利用print css進行實際的開發。關於打印css,參見http://css-discuss.incutio.com/?page=PrintStylesheets
四 、使用PDF文件
用這種方式,就是從服務器端下載一個pdf文件流,在IE中用adobe插件打開,而後用adobe的打印菜單進行打印,雖然這種方案,也能實現精確套打,但須要下載adobe插件。這是國外報表工具常常推薦的一種打印方法,但在pdf不那麼普及的中國,這種方案不是最好選擇。
五 、採用純ActiveX
這種方案就是下載一個控件,票據的數據再也不以html方式呈現,而是呈如今ActiveX中。這種方案的優勢是打印的精確度高,分頁的可控性好,但缺點也是很明顯的,嵌入ActiveX控件破壞了web應用的總體html風格,且這樣的控件比較大(通常超過1M),下載頗費時間)。市場上的非java類報表產品,通常都採用這種方案。
六 、採用Applet方式
採用Applet方式,分頁或精確打印,均可以作到完美,但缺點也很明顯,表如今:
安裝Applet成本巨大。須要下載十幾M的文件。
打印報表時,須要從新向服務器檢索數據,效率低。由於Applet方案,通常採用html方式呈現數據,打印時Applet必須向服務器檢索同一張票據的數據,看上去,是打印了當前頁的票據,實際上,Applet根本不會用當前html頁的數據來打印,而是向服務器下載數據到Applet中來打印。也就是說,打印的話,必須兩次請求,一次html呈現,一次用來打印。
不能解決連續打印。好比,不是僅打印一張票據,而是連續一次打印若干個票據。
不能解決打印機設置問題,如存在多臺打印機時,老是須要手工選擇,打印到哪一臺打印機。
市場上java類的報表工具,通常推薦Applet方式來實現打印。
七 、輕量級的ActiveX打印方式
-----ScriptX-----
ScriptX的免費版本好點,已經能知足大部分的需求.
MeadCo's ScriptX控件有兩種使用方式,一種是作爲免費版本使用,一種是作爲收費版本使用,免費版本支持的功能要少些,不過最重要也是最經常使用的頁面設置,它仍是提供的,所以使用免費版本便可。不過這兩個版本用的都是同一個cab文件,只不過在代碼設置中有一些不一樣。
-----PAZU (四方)-----
PAZU 我的或者商業使用均真正免費受權,無IP或者域名限制。
PAZU自2009年6月起採用免費的許可,申請時,您必須有肯定的IP地址或者域名(主機名),PAZU是綁定IP或者域名的,IP或域名還沒有肯定的咱們不能頒發受權,另外,受權一經頒發就不能修改綁定。 綁定的IP和域名必須是最終用戶的,因此,最終用戶的應用網站必須和4Fang網站作好連接,不然 PAZU會由於沒法驗證受權的合法性而不能正常工做(內網應用除外)。
企業能夠購買開發集成版(適合項目集成或者產品開發公司,提供KeyGen工具,本身生成許可受權,不限制發行)
-----jatoolsPrinter(傑表.打印控件)-----
免費版本只能在192.168.*** 網段使用,2.0以前的版本有免費版本,2.0以後是收費的。目前最新版本是4.2.他們能夠經過web腳原本選擇輸出打印機,紙張大小,打印方向等,沒必要每次手工設定。
價格請看:http://www.jatools.com/print/howtobuy.htm
對於簡單的打印,咱們用IE的功能就能夠了,對於須要複雜的設置的,建議使用輕量級的ActiveX打印方式。在接下來的系列教程裏,咱們會一一介紹。 javascript