ASP.NET之Web打印-終極解決篇

轉自:http://blog.csdn.net/luandao2000/archive/2005/01/18/257840.aspx

ASP.NET之Web打印-終極解決篇

        做過bs開發的同志應該都深有體會,在web程序中打印不再象應用程序中那樣便於控制了,web程序天生的一些特性造成了這個缺點,如:打印機在本地,而文件確可能在服務器上;格式如何控制和定製等等。都給我們開發中帶來了很多問題,雖說有水晶報表等控件來解決但總歸是不方便。當然有了問題就會有人來研究解決,這裏我先對目前流行的幾種方式做個簡單介紹:

1、IE直接打印

        這個不用多說,直接調用window.print或者webrower控件的ExecWB方法來打印。方便快捷,客戶端無需任何設置即可。利用一些辦法也可以實現簡單的定製,比如做一個模板htm文件,然後在js中動態創建一個隱藏幀來,用腳本來生成其中的數據,再把最後的結果文件寫入到隱藏幀打印處理。如果處理的好,實際上效果也是不錯。對於簡單的打印需求應該是夠了。這裏我舉個實際中的例子來說明這種方式:
        開發中經常需要打印一些統計的結果給用戶,比如說一個常見的功能是營業報表類的打印:操作員先輸入查詢條件,然後提交得到查詢的結果,點擊打印後,按照定義好的格式打印報表。
        我們實現上大部分情況會把查詢的結果綁定到DataGrid上來,然後打印DataGrid。這種情況的打印一般來說格式比較固定簡單,確定後基本不會再作更改。所以可以採用IE直接打印,但若直接調用window.print來打印頁面,頁面上別的元素也會被打印處理,頁頭頁尾的格式也不好控制。
        

2、ActiveX控件

        自己開發控件。這種方式很多商用軟件採用這種方式,寫成控件後已經無所謂是在web中使用還是應用程序中使用了。打印方式非常靈活,基本上程序能做到的web也能做得到。但客戶端需要安裝組件,部署不是很方便。

3、.NET組件
        
        盧彥寫過一篇很好的文章《利用XML實現通用WEB報表打印》,相信大家都看過了。思路新穎,實現簡單,確實不失爲一種通用WEB打印解決辦法,尤其利用XML來描述打印文件的方法給以後的格式的拓展留下很好的接口,非常容易擴充。這種打印方式對於格式變化大,數據量小的應用來說非常合適。這種思路也給了ASP.NET上打印的一種新的思路:自定義一些組件來實現靈活的打印功能。當然缺點也是顯而易見:1、需要客戶端安裝NET framework1.0組件。2、XML的解析上,如果文件較大速度上不是很理想。3、頁面首次加載時會有明顯的延時。

 

先列個條目,明天繼續寫

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