许多web应用的开发中都会涉及到票据打印的功能。常用的Web打印实现的方式有:
1.浏览器打印接口
调用window.print()方法,调用打印机功能打印当前窗口的内容,与单击浏览器的打印按钮效果一致。示例代码如下:
<html> <body><p>一些文字内容......</p><button onclick="window.print()">打印当前页面</button></body>
</html>
优点是打印对话框功能很全面,甚至如火狐浏览器直接就是调用了系统的打印对话框,对于设置打印格式之类的非常方便。浏览器打印的缺点是只能打印当前的html页面,并且分页不受控制。
2.pdf
利用浏览器的pdf插件打开pdf文档,或者生成文档供用户下载后本地打印。优点是打印内容的格式比较容易控制,适合票据套打。并且打印功也很丰富。缺点是无法连续打印多份pdf文档。
3.Active X
这种方式就是下载一个控件,票据的数据不再以html方式呈现,而是呈现在ActiveX中。优点是打印内容的格式可控性好,但缺点也是很明显的,嵌入ActiveX控件破坏了web应用的整体html风格,且这样的控件比较大(一般超过1M),下载颇费时间)。市场上的非java类报表产品,一般都采用这种方案。
4.Applet
利用Applet在客户端执行的特性,使用java PrintService包进行打印。这种方式的优点是可以媲美桌面程序的打印控制,缺点是Applet需要下载,并且Applet实现的打印对话框用java UI库,风格上也与html不统一。
在此项目中,客户要求打印多种票据,数据自动套打在预先印刷的票据纸张上,并且一次操作后需要对系统中全部用水户连续打印多张不同数据。考虑到对打印内容的精确控制和连续打印的需求,最终选择了Applet+pdf的方案,将在下一篇中详细介绍。