基於ASP.NET 2.0 實現WEB列印方法的探討

來源:互聯網
上載者:User

摘  要:Web列印是在開發B/S結構應用程式時一項比較複雜但又應用廣泛、非常實用的一種技術。本文主要針對ASP.NET 2.0實現WEB列印的幾種方法進行了初步探討,對每種方法的實現、各自特點進行了闡述。

關鍵詞: ASP.NET 2.0 ;B/S模式 ;WEB 列印

中圖分類號:TP393.092             文獻標識碼:A

Study on Implementation of WEB Print Method Based on ASP.NET 2.0

                ZHU Xiao-dong

(Tianjin Railway Technical and Vocational College,Tianjin 300240 )

Key words: ASP.NET 2.0 ;B / S mode ;WEB print

目前,由於B/S模式擴充性好、資料安全性高、無須考慮用戶端的相容性等優點,在軟體開發實踐中得到了廣泛的應用,而WEB 列印則是B/S模式應用程式中必需考慮的問題。雖然用戶端的規則很簡單,容易學習,容易維護,容易發布,但由於只能採用瀏覽器作為使用者介面與伺服器進行互動,不能精確地控制用戶端的印表機,使WEB報表格式控制、定製等複雜的列印難以處理,其結構的特殊性和一般程式上的列印功能有所不同,而軟體開發人員總是力求使B/S系統具有C/S系統相類似的列印功能,這是開發人員所面臨的一個共同難題。

WEB 列印通常分為用戶端指令碼方式和伺服器端程式方式,在用戶端指令碼方式中,主要使用JS 可以分析源頁面的內容,將欲列印的頁面元素提取出來,實現列印。通過分析來源文件的內容,可以產生列印目的文件。這種方式用戶端獨立完成列印目的文件的產生,減輕伺服器負荷;但來源文件的分析操作複雜,並且來源文件中的列印內容要有約定。通常採用伺服器端程式方式,利用後台代碼從資料庫中讀取列印源,產生列印目的文件。當的頁面產生時,還應適當考慮使用CSS 來實現強制分頁控制。這種方式可以產生內容非常豐富的列印目的文件,目的文件的內容的可控性強。由於列印內容是從資料庫中擷取的,所以產生操作相對簡單;但伺服器端負載比較大。

ASP.NET 2.0是微軟公司推出新型體繫結構.NET Framework 2.0的一個主要組成部分,在開發人員的效率、管理、效能和延展性等方面得到了極大的提高。 其新開發的IDE--Visual Studio 2005是目前B/S模式應用程式的主要開發工具。針對ASP.NET 2.0的WEB列印方法主要有以下幾種解決方案:

①利用IE瀏覽器直接實現WEB列印;

②調用Office實現WEB列印;

③利用第三方控制項實現WEB列印;

④利用.NET 2.0組件水晶報表實現WEB列印。

利用IE瀏覽器直接實現WEB列印

1.1調用windows.print()方法實現列印

在頁面上添加“列印”按鈕,然後增加如下代碼:

<input type="button"onclick="window.print()"value="print">

這種方法代碼簡單、方便快捷、無需任何設定,但頁面上別的元素也會被列印處理,頁頭和頁尾的格式難以控制,無法實現“列印設定”和“預覽列印”等功能,可以利用css中的Media 屬性來設定列印和顯示的格式,代碼如下:

<style media="print" type="text/css"> 

.Noprint{display:none;} 

.PageNext{page-break-after: always;} 

</style> 

在不想列印的頁面元素添加: class="Noprint" ,那就不會出現在列印和預覽列印中了。如:

<table width="757"  height="174"  border="0"  align="center" cellpadding="0" cellspacing="0">

<tr  class="noprint">

<td height="133" align="center" valign="top">

<img src="Images/test.jpg" width="757" height="133"></td>

</tr>

</table>

此時<tr class="noprint">是不列印的tr。

1.2調用WebBrowser控制項實現列印

WebBrowser控制項是IE內建的瀏覽器控制項,它是ActiveX控制項,無需使用者下載,可以通過調用WebBrowser控制項的ExecWB方法實現列印,首先在HTML源碼中建立Object對象,Object對象主要向HTML頁面中插入對象,代碼如下:

//加入ID為WebBrowser的WebBrowser控制項

<object ID=''WebBrowser'' WIDTH=''0''  HEIGHT=''0''

  CLASSID=''CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'' VIEWASTEXT></object>

CLASSID屬性主要用來擷取或設定對象的類別識別項。最後在用戶端控制項的onclick事件中調用WebBrowser組件的相關方法進行列印、預覽列印等操作,代碼如下:

<input type=button  value=直接列印 onclick=document.all.WebBrowser.ExecWB(6,6)>

<input type=button  value=版面設定 onclick=document.all.WebBrowser.ExecWB(8,1)>

<input type=button  value=預覽列印 onclick=document.all.WebBrowser.ExecWB(7,1)>

此種方法優點是可以輕鬆實現列印、版面設定和預覽列印等功能,用戶端能獨立列印目的文件,減輕伺服器端負荷;缺點是來源文件的分析操作複雜,並且來源文件中的列印內容要有約束。

2   調用Office實現WEB列印

在瀏覽網頁時,經常需要將Web頁面中的內容通過Word或Excel文檔列印出來,藉助功能強大的Office辦公軟體,可以完成非常複雜的文檔格式,進行精細的控制,可適應性強、易於控制。下面以將資料匯出到Word文檔為例進行介紹,Excel與此類似,不再贅述。

Word作為文檔處理軟體,它在處理文檔和資料的過程中顯示出了強大的功能。將資料匯出到Word,主要通過設定Response對象的ContentType屬性為輸出檔案的類型來實現的。代碼如下:

Response.AppendHeader("Content-Disposition","attachment;filename=test.doc")

Response.ContentType="application/ms-word";

//如果輸出為excel,修改為以下代碼

//Response.AppendHeader("Content-Disposition","attachment;filename=test.xls");

// Response.ContentType="application/ms-excel";

this.EnableViewState=false;

String Write tw=new String Writer();

HtmlTextWriter hw=new HtmlTextWriter(tw);

GridView1.RenderControl(hw);

Response.Writer(tw.ToString());

Response.End();

匯出成Word或Excel後使用者可以自訂列印的內容和格式,開發週期短、維護成本低,使用者使用方便,並且可以跨平台運行。但資料匯出前難以產生預覽列印,在伺服器端或用戶端使用時,要保證安裝有office軟體,在用戶端使用時要求用戶端在IE的安全設定上有一定的要求。

利用第三方控制項實現列印

目前有不少開發商提供的相關控制項,可以實現Web列印功能,如MAX Reports、如意報表、ScriptX等。優秀的第三方控制項,列印方式靈活,基本上程式能做到的web也能做得到,並且開發週期短,系統維護性好。但列印功能受控制項本身限制,一般無法做到跨平台,並需支付相關費用,提高了系統的開發成本。

也可以自行開發實現Web列印,一般可以通過自行開發ActiveX控制項、Java Applet或動態產生PDF檔案等方式來完成。這種方式可定製性強,可以完全按照使用者的要求進行設計Web頁面,但開發週期長,開發和維護成本較高。

目前有一些軟體公司使用JAVA開發基於WEB的報表組建,使用這些組建時先要在用戶端安裝,然後,由伺服器端來產生VBscript指令碼,在用戶端運行、建立相應的組件對象;利用組件對象來進行列印操作。這種方法只要用戶端的com組件開發完成。使用者只要熟悉vbscript或lavascript指令碼語言就可能方便的調用。這種方法列印效率高、功能豐富、能做到精確定位列印以及批量列印另外安裝成本低廉。ACtiveX只有1M多,在用戶端首次使用時需要安裝一次,無需再次安裝。但用戶端畢竟需要安裝組件,部署不是很方便。另外對瀏覽器版本也有一定的要求。

利用水晶報表實現列印

水晶報表(Crystal Reports)是一個優秀的報表開發工具,水晶報表以其簡單、易用和強大的功能令開發人員倍受青睞。Crystal  Reports  for Visual Studio.NET 2005具有以下特點:

①針對所有以.NET為目標的程式語言提供高度的整合,可以在Windows應用程式或ASP.NET Web應用程式的項目中使用本身所專長的程式語言來設計報表。

②提供強大的報表設計工具CrystalReportDesigner,可以通過其定義報表的資料來源,定位各個控制項,輕易製作出各種複雜格式的報表。

③通過報表檢視器控制項(CrystalReportViewer)設定報表的格式和自訂匯出選項等,將報表展現在Web Form網頁上。

④使用者僅需要Web瀏覽器就可以查看報表。

水晶報表列印非常靈活、方便,列印的內容豐富多彩,使用者僅需要網頁瀏覽器就可以查看報表,使用者可將報表匯出各種格式的檔案,如.pdf,.doc,.xls,.html,.rpt等,使用者不僅與報表可以輕鬆互動,而且具有內容建立、計算、分組、查詢等強大功能。

Crystal Reports for Visual Studio.NET 2005的執行模式有兩種:Pull Model(拉模型)和Push Model (推模型),執行任一種模式均可擷取Crystal Reports資料。在拉模型中,驅動程式將串連到資料庫並根據需要將資料“拉”進來。使用這種模型時,與資料庫的串連和為了擷取資料而執行的SQL命令都同時由Crystal  Report本身處理,不需要開發人員編寫代碼。因此,在運行時如無須編寫任何特殊代碼,則使用拉模型。相反,推模型需要開發人員編寫代碼以串連到資料庫,執行SQL命令以建立與報表中的欄位匹配的記錄集或資料集,並且將該對象傳遞給報表。該方法可以將串連共用置入應用程式中,並在Crystal Reports收到資料之前先將資料篩選出來。

在Visual Studio 2005中通過CrystalReportViewer控制項來查看報表源中的資料,並對報表進行設計,使報表更加美觀。

結束語

綜上所述,本文對ASP.NET的Web列印技術作了初步的探討,對每種實現方法優點及不足進行了簡要介紹,在開發過程中使用者應根據項目的實際需求進行選擇,靈活處理WEB列印所遇到的各種問題,以達到較理想的應用效果。

 

參考文獻:

[1]張躍廷.ASP.NET 程式開發範例寶典[M].北京:人民郵電出版社,2007:572-599.

[2]李明剛,肖健.ASP.NET(c#)基礎教程[M].北京:清華大學出版社,2006:294-392.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.