利用Net組件打印
利用Net組件
; 優點這種打印方式對於格式變化大數據量小的應用來說非常合適
; 缺點
– 需要客戶端安Net framework組件
– Xml的解析上如果文件較大速度上不是很理想
– 頁面首次加載時會有明顯的延時
使用XSL和XSLT轉換Xml
; XSL擴展樣式表語言可以通過它來把Xml轉換為其他的文本格式
; XSL轉換包括發現或者選擇一個模式匹配通過使用XPath選擇一個結果集然後對結果集中的每一項為這些匹配定義結果輸出
; XSL是一個功能強大的工具可以把Xml轉換成任何你想要的格式
【參考代碼】
以下是引用片段
XslTransform xslt = new XslTransform();
xsltLoad(ServerMapPath( StudentsToHTMLxsl) );
XPathDocument XDoc = new XPathDocument(ServerMapPath( StudentsXml ));
XmlWriter writer = new XmlTextWriter( serverMapPath(Studentshtml) SystemTextEncodingUTF );
xsltTransform( XDoc null writer );
writerClose();
ResponseRedirect(Studentshtml);
利用ActiveX控件打印
利用第三方控件
; 自己開發控件這種方式很多商用軟件采用這種方式寫成控件後已經無所謂是在web中使用還是應用程序中使用了
; 優點打印方式非常靈活基本上程序能做到的web也能做得到
; 缺點客戶端需要安裝組件部署不是很方便
使用水晶報表
; 用戶僅需要Web 浏覽器就可以查看報表
; 報表查看器控件可以是應用程序中眾多控件之一
; 與報表輕松交互
; 用戶可將報表導出為Microsoft word 和Excel 格式以及PDFHTML 和Crystal Reports for visual Studio Net格式
; 可以使用報表控件直接打印
【實例代碼】
以下是引用片段
//水晶報表的填充省略連接代碼
myReport ReportDoc = new myReport();
ReportDocSetDataSource(ds);
CrvReportSource = ReportDoc;
//輸出為指定類型文件
CrystalDecisionsSharedDiskFileDestinationOptions DiskOpts = new CrystalDecisionsSharedDiskFileDestinationOptions();
ReportDocExportOptionsExportDestinationType = CrystalDecisionsSharedExportDestinationTypeDiskFile;
string strFileName = serverMapPath(Output);
switch (ddlFormatSelectedItemText)
{
case Rich Text (RTF):
ReportDocExportOptionsExportFormatType = CrystalDecisionsSharedExportFormatTypeRichText;
DiskOptsDiskFileName =strFileName + rtf;
break;
case Portable Document (PDF):
ReportDocExportOptionsExportFormatType = CrystalDecisionsSharedExportFormatTypePortableDocFormat;
DiskOptsDiskFileName = strFileName + pdf;
break;
case MS word (DOC):
ReportDocExportOptionsExportFormatType = CrystalDecisionsSharedExportFormatTypeWordForWindows;
DiskOptsDiskFileName = strFileName + doc;
break;
case MS excel (XLS):
ReportDocExportOptionsExportFormatType = CrystalDecisionsSharedExportFormatTypeExcel;//
DiskOptsDiskFileName = strFileName + xls;
break;
default:
break;
}
ReportDocExportOptionsDestinationOptions = DiskOpts;
ReportDocExport();
//打印
// 指定打印機名稱
string strPrinterName;
strPrinterName = @Canon BubbleJet BJCSP;
// 設置打印頁邊距
PageMargins margins;
margins = ReportDocPrintOptionsPageMargins;
marginsbottomMargin = ;
marginsleftMargin = ;
marginsrightMargin = ;
marginstopMargin = ;
ReportDocPrintOptionsApplyPageMargins(margins);
//應用打印機名稱
ReportDocPrintOptionsPrinterName = strPrinterName;
// 打印 // 打印報表將startPageN 和endPageN
// 參數設置為 表示打印所有頁
ReportDocPrintToPrinter( false);
[] [] [] []
From:http://tw.wingwit.com/Article/program/net/201311/14975.html