网络打印概述
; B/S结构导致了Web应用程序中打印的特殊性
; 程序运行在浏览器中打印机在本地而文件确可能在服务器上导致了打印控制不是很灵活
; 格式如何控制和定制等是我们开发中可能会面对的问题
打印文档的生成
; 客户端脚本方式
一般情况下主要使用JS 可以分析源页面的内容将欲打印的页面元素提取出来实现打印通过分析源文档的内容可以生成打印目标文档
优点客户端独立完成打印目标文档的生成减轻服务器负荷;
缺点源文档的分析操作复杂并且源文档中的打印内容要有约定
; 服务器端程序方式
利用后台代码从数据库中读取打印源生成打印目标文档当的页面生成时还应适当考虑使用CSS 来实现强制分页控制
优点可以生成内容非常丰富的打印目标文档目标文档的内容的可控性强由于打印内容是从数据库中获取的所以生成操作相对简单;
缺点服务器端负载比较大;
页面设置
; 页面设置主要是指设置打印文档的页边距页眉页脚纸张等内容页面设置将直接影响到打印文档版面的生成效果所以它和打印文档的生成有着密切的关系比如表格的行数大小位置字体的大小等
现有的技术是利用IE 内置的打印模板方式来控制页面设置其可以对打印目标文档产生非常大的影响打印模板可以控制页边距页眉页脚奇偶页等内容并可以将用户的设置取得还可以将设置发送到服务器端打印模板技术可以自定预览窗口和打印格式最大限度地影响目标文档和打印效果
IE直接打印
; 即直接调用windowprint或者webrower控件的ExecWB方法来打印
; 优点方便快捷客户端无需任何设置即可
; 缺点打印控制不是很灵活如果直接调用
windowprint来打印页面页面上别的元素也会被打印处理页头页尾的格式也不好控制
; 常用方法大部分情况会把查询的结果绑定到DataGrid上来然后打印DataGrid这种情况的打印一般来说格式比较固定简单确定后基本不会再作更改所以可以采用IE直接打印
【实例代码】
注①这是客户端通过windowprint打印指定内容这里定义sprnstr和eprnstr来指定内容
执行代码
以下是引用片段
<inputtype=buttonname=printvalue=预览并打印onclick=preview()>
②如果直接使用windowprint将打印页面上的所有内容但是我们可以使用
以下是引用片段
st<<style> @media Print { Noprn { DISPLAY: none }}
是用来指定不打印的内容
script language=Javascript>
function preview()
{
bdhtml=windowdocumentbodyinnerHTML;
sprnstr=<!startprint>;
eprnstr=<!endprint>;
prnhtml=bdhtmlsubstr(bdhtmlindexOf(sprnstr)+);
prnhtml=prnhtmlsubstring(prnhtmlindexOf(eprnstr));
windowdocumentbodyinnerHTML=prnhtml;
windowprint();
}
</script>
<!省略部分代码>
<form id=WebForm 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=windowprint() value=print>
</form>
[] [] [] []