在B/S(Browser/Server)系统中,打印通常有以下几种方法:
使用Windows.print方法
将所有数据输出到页面,然后调用`windows.print()`方法进行打印。
可以使用`onbeforeprint`和`onafterprint`事件调整网页,例如隐藏不需要打印的按钮等。
这种方法适用于简单的打印需求,但对于复杂的报表或发票打印可能不够灵活,且需要用户在打印设置中手工调整页眉和页脚。
使用Applet和第三方报表工具
例如JasperReports和FineReport等,这些工具可以将数据转换成PDF、Word或Excel格式后进行打印。
由于Applet需要访问本地文件,客户端必须安装JRE,并且可能需要修改Java的安全策略文件(如`java.policy`)以允许访问打印功能。
这种方法适用于需要精确定位和复杂格式的打印需求,但需要额外的配置和安装。
转换为PDF格式后打印
将网页内容转换为PDF格式,然后使用PDF阅读器的打印功能进行打印。
可以使用开源库如iText来生成PDF文件,并通过配置实现自定义的打印需求。
这种方法适用于需要灵活定制打印内容和格式的场景,且不需要额外的客户端安装。
使用ActiveX控件
利用ActiveX控件实现打印功能,例如使用Microsoft的WebBrowser控件。
需要编写ActiveX控件,并可能涉及到使用其他编程语言(如C++)来增强控件的功能和扩展性。
这种方法适用于需要高度定制化的打印解决方案,但开发成本较高且可能受到浏览器安全策略的限制。
建议
对于简单打印需求,可以使用`windows.print()`方法或利用浏览器的打印功能直接打印HTML模板。
对于复杂打印需求,建议使用转换为PDF格式后打印的方法,因为PDF格式具有较好的跨平台兼容性和打印灵活性。
如果需要更高的定制性和控制力,可以考虑使用Applet或ActiveX控件,但需要注意安全性和兼容性问题。