RDIFramework.NET ━ Web中打印的各種方案參考-歡迎補充
RDIFramework.NET ━ Web中打印的各種方案參考-歡迎補充
做Web開發的同志應該都深有體會,在web程序中打印不再象應用程序中那樣便于控制了,web程序天生的一些特性造成了這個缺點,如:打印機在本地,而文件確可能在服務器上;格式如何控制和定制等等,都給我們開發中帶來了很多問題,當然有了問題就會有人來研究解決,這里我先對目前流行的幾種方式做個簡單介紹:
一、IE直接打印
這個不用多說,直接調用window.print或者webrower控件的ExecWB方法來打印。方便快捷,客戶端無需任何設置即可。利用一些辦法也可以實現簡單的定制,比如做一個模板htm文件,然后在js中動態創建一個隱藏幀來,用腳本來生成其中的數據,再把最后的結果文件寫入到隱藏幀打印處理。如果處理的好,實際上效果也是不錯,對于簡單的打印需求應該是夠了。比如下面的這個實現,我們要打印待辦任務,如下圖所示:

用戶單擊打印按鈕,即可彈出打印效果,如下圖所示:

實現上面的效果非常的簡單,這對簡單的要求不高的打印非常有用。實現方式如下,首先我們需要設置一個我們要打印的范圍,如下面代碼:
<!--startprint--> <table id="list"></table> <!--endprint-->
上面的Id=List是我們數據展示的區域,這樣用戶單擊時就可以打印這個范圍內的數據,打印代碼如下:
$('#btnPrint').click(
function preview() {
var bdhtml = window.document.body.innerHTML;
var sprnstr = "<!--startprint-->";
var eprnstr = "<!--endprint-->";
var prnhtml = bdhtml.substr(bdhtml.indexOf(sprnstr) + 17);
prnhtml = prnhtml.substring(0, prnhtml.indexOf(eprnstr));
window.document.body.innerHTML = prnhtml;
window.print();
window.history.go(0);
});
二、使用水晶報表做打印支持
水晶報表我相信做.NET開發的朋友都有聽過,水晶報表有很多優點,比如:快速的報表開發、能夠導出成為復雜的交互性圖表 、可以與其它控件一起在WebForm中使用 、能夠動態地將報表導出成為.pdf,.doc,xls,html,rtf等多種格式。如何制作水晶報表網上有很多現成的文章可以供參考,這兒就不介紹了。下面我們用水晶報表來做打印的實現。效果圖如下,我們要打印產品管理的數據,如下圖所示:

我們單擊打印,即可打印產品管理報表,如下圖所示:

代碼非常的簡單,先要制作好水晶報表(報表的數據源可以為DataTable,也可以是實體),如何制作可以參考相關的文章,網上很多。制作好后,新建一個WebForm頁面,將CrystalReportViewer添加到頁面中,再指定其對應的報表即可,再加上下面這段代碼,一個簡單的報表就完成了。
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { DataTable dtReportData = new DataTable("dsProductInfo"); IDbProvider dbProvider = DbFactoryProvider.GetProvider(SystemInfo.RDIFrameworkDbConection); dtReportData =dbProvider.Fill("SELECT TOP 100 PRODUCTCODE,PRODUCTNAME,PRODUCTMODEL,PRODUCTSTANDARD,PRODUCTUNIT,PRODUCTPRICE,PRODUCTDESCRIPTION FROM " +CASE_PRODUCTINFOTable.TableName); ReportDataSource rds = new ReportDataSource("dtCaseProductInfo", dtReportData); ReportViewer1.LocalReport.DataSources.Clear(); ReportViewer1.LocalReport.DataSources.Add(rds); ReportViewer1.LocalReport.Refresh(); } }
三、使用jqprint進行打印
jqprint,一個通過單擊頁面按鈕,便實現頁面打印的jQuery插件jqprint。jqprint的使用方法非常的簡單,但比我們介紹的方法一更好用一些,更專業一些。要使用jqprint,首先要引用相應的js文件。
<script language="javascript" src="jquery-1.4.4.min.js"></script> <script language="javascript" src="jquery.jqprint-0.3.js"></script>
比如,我們要打印如下html的內容:
<div id="ddd"> <table> <tr> <td>test</td> <td>test</td> <td>test</td> <td>test</td> <td>test</td> </tr> </table> </div>
只需調用這行代碼即可實現:
$("#ddd").jqprint();
如果需要使用jqprint,可以在這兒下載,點擊下載。
下面我們打印一個復雜一點的,打印角色列表,效果果如下所示:

單擊打印按鈕,打印效果如下圖所示:

四、其他方法
1、我們可以使用導出Excel或PDF等方式來進行打印。
2、使用商業打印控件進行打印,如Grid++ Report控件。
3、lodop打印控件。
4、本文只是拋磚引玉的作用,歡迎大家補充。
作者:
RDIF
出處:
http://www.rzrgm.cn/huyong/
Email:
406590790@qq.com
QQ:
406590790
微信:
13005007127(同手機號)
框架官網:
http://www.guosisoft.com/
http://www.rdiframework.net/
框架其他博客:
http://blog.csdn.net/chinahuyong
http://www.rzrgm.cn/huyong
國思RDIF開發框架
,
給用戶和開發者最佳的.Net框架平臺方案,為企業快速構建跨平臺、企業級的應用提供強大支持。
關于作者:系統架構師、信息系統項目管理師、DBA。專注于微軟平臺項目架構、管理和企業解決方案,多年項目開發與管理經驗,曾多次組織并開發多個大型項目,在面向對象、面向服務以及數據庫領域有一定的造詣。現主要從事基于
RDIF
框架的技術開發、咨詢工作,主要服務于金融、醫療衛生、鐵路、電信、物流、物聯網、制造、零售等行業。
如有問題或建議,請多多賜教!
本文版權歸作者和CNBLOGS博客共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,如有問題,可以通過微信、郵箱、QQ等聯系我,非常感謝。

浙公網安備 33010602011771號