浅谈报表工具的打印方案

 

报表工具除了基本的绘制报表,完成数据呈现(也就是让终端用户能看到报表),打印也是报表的基本功能之一。

当前报表工具很多,可以按地域、开闭源等划分,包括有杰表、水晶、Style Report、birt、ireport、润乾、FR 等等,各家打印方式也各不相同,但总的来说,有 activex、applet、flash、pdf 等打印模式。

对比来看:

Activex 打印:主要是在 c/s 架构时代使用,当时发挥了极大作用的,处理得好且稳定,但随着 web 报表的普及,这种打印控件几乎没人采用了。

Applet 打印:目前常用报表工具基本都支持,比如上面提到的厂商。Applet 是 java 实现,再加上当前多数报表工具也基于 java 开发,所以兼容性较好,实现起来也方便,打印速度相比其他要快。不过,客户端打印的时候需要有 java 运行环境(即 jre),需要客户端安装,这个可能给终端用户来说带来点小麻烦,当然多数厂家都已经支持自动下载安装 jre 了,也算是做出了弥补。

Flash 打印:此方式在客户端点击打印后会触发 flash player 插件,插件几乎浏览器都自带,一般不会给终端带来安装的麻烦。打印的基本原理大概都是报表工具算完报表成表格,给到 flash,flash 再按照给的表格再画出来,然后传到打印机打印。不过 flash 插件开放接口相对少,不如 applet 打印功能丰富,比如选奇偶页打印、缩放打印等。

Pdf 打印:一般情况下都是从报表服务器端下载一个 pdf 文件流,然后调用 Adobe Reader,从而利用 Adobe 实现打印功能。也因此要给浏览器安装对应插件,一般情况下系统安装 Adobe Reader 后会自动给 IE 浏览器安装对应插件。国外的 java 报表工具用此方式打印比较广泛,比如 style report、jasperreport 等,当然国内的报表工具也基本都支持该方式了。

关于以上几种打印方式,在web 如何实现精准打印印中都有详细的说明

总结来说,各种打印方式差异在借助的插件不同,实现原理也不同,各有各的优缺点。另外,每个方式也有不同的限制:applet 控件已被多数非 IE 内核的浏览器禁止使用,比如 chrome、firefox,所以更适合 IE 内核浏览器;Flash 本身就有缺陷,所以也在陆续被限制,功能比其他方式要简单,没太有未来;pdf 目前在兼容性上还比较好,如果终端浏览器使用类型较多的话,也是不错的选择,但功能上又没有 applet 丰富。所以,选择具体打印方式时可综合考虑了。

另外还整理了一些关于打印相关的问题,想了解的可以参考。
如何实现报表直接打印需求
单据套打
如何实现批量打印
报表续打功能实现