网络打印
给家里人在网上报名考试,涉及到了一个报名表格打印感觉挺方便,不禁研究了一下网络打印原理。
B/S结构本身就导致了网络打印存在一定的特殊性。
1.网络程序运行在服务器上,提供服务到用户的客户端浏览器中,而用户打印机在本地,直接导致了打印控制不是很灵活。
2.打印格式如何灵活控制和定制等,也是开发过程中比较棘手的难题。
以前我曾给做过一个生产管理系统,开发工具是.NET,由于报表比较繁杂,使用的是水晶报表打印组件,配置比较麻烦页面负载也较大,而轻量级的开发不可能也使用水晶报表。
如果是针对已经生成好的页面内容进行打印,最好的办法还是使用JS调用IE直接打印,研究测试了一下效果还算比较完美。
首先定制好需要打印的页面,比如报名表格之类,在HTML中将所需打印的表格代码包括在<!--startprint--> 和 <!--endprint--> 之间,然后按钮直接调用打印函数
JS代码如下:
<script type="text/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>
最终打印出来的和页面展示的效果完全一致,IE打印的缺点就是打印前必须将结果页面生成好。