• B/S結構導致了Web應用程序
• 程序運行在瀏覽器中,打印機在本地,而文件確可能在服務器上,導致了打印控制不是很靈活。
• 格式如何控制和定制等,是我們開發中可能會面對的問題。
打印文檔的生成
優點:客戶端獨立完成打印目標文檔的生成,減輕服務器負荷;
缺點:源文檔的分析操作復雜,并且源文檔中的打印內容要有約定。
• 2、服務器端程序方式
優點:可以生成內容非常豐富的打印目標文檔,目標文檔的內容的可控性強。由于打印內容是從數據庫中獲取的,所以生成操作相對簡單;
缺點:服務器端負載比較大;
頁面設置
• 頁面設置主要是指設置打印文檔的頁邊距、頁眉、頁腳、紙張等內容。頁面設置將直接影響到打印文檔版面的生成效果,所以它和打印文檔的生成有著密切的關系。比如:表格的行數、大小、位置、字體的大小等。
IE直接打印
• 即直接調用window.print或者webrower控件的ExecWB方法來打印。
• 優點:方便快捷,客戶端無需任何設置即可。
• 缺點:打印控制不是很靈活。如果直接調用
window.print來打印頁面,頁面上別的元素也會被打印處理,頁頭頁尾的格式也不好控制。
• 常用方法:大部分情況會把查詢的結果綁定到DataGrid上來,然后打印DataGrid。這種情況的打印一般來說格式比較固定簡單,確定后基本不會再作更改。所以可以采用IE直接打印。
【實例代碼】
注:①這是客戶端通過window.print打印指定內容。這里定義sprnstr和eprnstr來指定內容
執行代碼:
以下是引用片段: <input type="button" name="print" value="預覽并打印" onclick="preview()"> |
?、谌绻苯邮褂脀indow.print將打印頁面上的所有內容,但是我們可以使用
以下是引用片段: st<<style> @media Print { .Noprn { DISPLAY: none }} 是用來指定不打印的內容。 script language="Javascript"> function preview() { bdhtml=window.document.body.innerHTML; sprnstr="<!--startprint-->"; eprnstr="<!--endprint-->"; prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17); prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr)); window.document.body.innerHTML=prnhtml; window.print(); } </script> <!--省略部分代碼--> <form id="WebForm1" method="post" runat="server"> <center>本部分以上不被打印</center> <!--startprint--> <div align="center"> <asp:DataGrid id="dgShow" runat="server"> <!--省略部分代碼--> </asp:DataGrid> </div> <!--endprint--> <center>本部分以下不被打印</center> <div align="center"> <input type="button" name="print" value="預覽并打印" onclick="preview()"> </div> <style> @media Print { .Noprn { DISPLAY: none }} </style> <p class="Noprn">不打印</p> <table id="datagrid"> <tr> <td>打印</td> </tr> </table> <input class="Noprn" type="button" onclick="window.print()" value="print"> </form> |
原文轉自:http://www.anti-gravitydesign.com