幾種web打印方案的比較

幾種web打印方案的比較

打印通常是系統的輔助部分,但是又必須解決,否則項目完成不了。下面來分析分析目前的幾種常見的web打印方案。


一、 瀏覽器的菜單打印功能
這是最簡單的,只需點擊頁面上的打印菜單,但是也是問題最多的,基本上是不能滿足用戶需要。比如:不能精確分頁,有出現打出半行字的風險;改變紙型後打印出的格式和頁面顯示的格式相差太大;頁眉頁腳也需要從菜單中去設置,等等等等。這種方案最大的優勢就是不需要做任何代碼,點擊打印就可以了。

 二、 window.Print()

這實際上,是瀏覽器打印功能菜單的一種程序調用。與點擊打印功能菜單一樣,不能精確分頁,不能設置紙型,套打的問題更加無從談起,只不過,可以讓用戶不用去點菜單,直接點擊網頁中的一個按鈕,或一個鏈接裏面調用罷了。
需要指出的是這種方法提供一個打印前和打印後的事件onbeforeprint、onafterprint。可以在打印前的時候重新編輯一些格式,專門送去打印,打印後又處理回來。
function window.onbeforeprint()
{
//將一些不需要打印的隱藏
}
function window.onafterprint()
{
//放開隱藏的元素
}


事實上,很多用戶都是採用這種方式打印,但是這種方式最致命的缺點是不能設置打印參數,比如紙型,頁邊距,選擇打印機等等。

三、 導出excel導出pdf文件的打印
將需要打印的數據導出excel文件或者導出pdf文件,然後打開excel文件或者pdf文件重新打印,用這種方案能實現精確的打印,套打也能實現,但是需要客戶端安裝excel和adobe軟件,操作起來也有些麻煩,並且導出的excel文件可以重新修改編輯,一般用戶都會要求系統提供這種導出的方案,也同時需要直接打印的功能,所以個人覺得這種方案也不能很好的解決打印的問題。


四、 純ActiveX控件
這種方案其實就是編寫一個C/S的打印控件,然後嵌入到頁面裏面,將要打印的數據裝入到控件中,然後打印。這種方案的優點是打印精度高,分頁,設置打印參數等等都能實現。但是缺點也是很明顯的,嵌入ActiveX控件破壞了web應用的整體html風格,且這樣的控件通常都比較大,一般都超過1M,下載很慢。

五、 Applet方式
採用Applet方式,分頁或精確打印,都可以做到完美,但缺點也很明顯,表現在:
安裝Applet成本巨大。需要下載十幾M的文件。
Applet本身可能並不大,但運行Applet所需的jre一般至少10幾M(jre1.4.2 , 15.45M)。用戶需要極大的耐心,來進行打印。
打印報表時,需要重新向服務器檢索數據,效率低。
因爲Applet方案,一般採用html方式呈現數據,打印時Applet必須向服務器檢索同一張票據的數據,看上去,是打印了當前頁的票據,實際上,Applet根本不會用當前html頁的數據來打印,而是向服務器下載數據到Applet中來打印。也就是說,打印的話,必須兩次請求,一次html呈現,一次用來打印。
市場上java類的報表工具,一般推薦Applet方式來實現打印。
 
六、 輕量級的ActiveX插件+DHTML+javascript+後臺代碼(動態獲取數據)

輕量級ActiveX插件:設置打印參數,比如預定義紙型,設置打印方向,打印邊距,指定打印機,不彈出打印對話框直接打印等等。

DHTML+javascript編輯打印數據的格式展現,實現格式的自定義。

後臺代碼,可以是java,dotnet等等的,實現動態獲取打印數據。

這種方案是比較理想的,只需要客戶端下載一個很小的打印插件,客戶端無需安裝任何C/S的格式設計器,就可以輕鬆實現打印格式的自定義,打印參數的自定義等等。

eprint自定義打印工具就是這樣一種web打印工具。下面是運行這種方案實現格式自定義的一個示例:

下面是一個預覽的界面。

格式設計頁面如下:

代碼調用如下圖:紅色圈中的爲調用的javascript函數。


這種方案的優點是:
能設置打印的紙型,方向,邊距,頁眉頁腳等等打印參數。
能實現精確打印,分頁;
格式可以自定義;
成本低廉,ActiveX只有70k。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章