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、本文只是拋磚引玉的作用,歡迎大家補充。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM