web 如何实现精准打印

在 WEB 系统中,打印是必不可少的一个功能,但也是一个比较棘手的问题。如果完全自己开发,由于涉及浏览器的局限性、js 兼容性、稳定性等因素,往往耗时长、工作量大,最终严重影响项目周期。特别地,在 WEB 环境下,套打需求的实现时难度更大,此时需要将浏览器中呈现的 HTML 精确地打印到票据中,实现对分页位置的控制。

常用的 WEB 打印实现方式有哪些呢?

1、 利用浏览器自带的打印控件来实现 web 打印

实现方法:直接调用 IE 的打印功能或者在程序中调用 window.print() 来实现 web 打印

优势:不需要对浏览器作任何扩充

缺点:

1) 不能精确分页。
浏览器一般是根据用户设置的页面大小、web 页面的内容多少来自行决定分页位置,程序员很难控制,因为会有页脚页眉干扰。
2) 不能准确对齐边边距及打印文字。
3)不能解决连续打印

2、 使用 pdf 文件

实现原理:从服务器端下载一个 pdf 文件流,在 IE 中用 adobe 插件打开,然后用 adobe 的打印菜单进行打印

优点:可以实现精确套打

缺点:需要下载 adobe 插件

3、 采用 Applet 方式

优点:可以实现分页和精准打印

缺点:1)安装 Applet 成本巨大,一般需要下载十几 M 的文件。

2)打印报表时,需要重新向服务器检索数据,效率低。

上面的三种实现方法虽然可以解决部分 web 打印问题,但是对于开发人员以及实施过程有很高的要求,而且终端的反馈也不尽如人意。在套打以及批量打印需求实现过程中问题会更明显。

那么,有没有一种方式可以快速简单地实现 web 打印需求呢?

必须有,那就是润乾报表!

准备好了吗? One two three GO!

润乾报表提供了哪些打印方案呢?且听我一一道来。

1、 支持打印方式

如果自己开发实现 web 打印功能,一般只会支持一种打印方式,而润乾报表提供了多种打印方式供用户根据自己业务要求选择使用,各种调用方法也很简单。

1) applet 打印

环境要求:客户端需安装 jre,需 IE 内核浏览器

前台调用 js 方法:printReport(‘report1’)// 直接打印

directPrintReport(‘report1’)// 打印预览

2) pdf 打印

环境要求:浏览器安装 pdf 插件

前台调用 js 方法:pdfPrintReport(‘report1’)// 直接打印

directPdfPrintReport(‘report1’)// 打印预览

3) flash 打印

环境要求:浏览器支持 flash 插件

前台调用方法:flashPrintReport(‘report1’) // 直接打印

directFlashPrintReport(‘report1’) // 打印预览

2、 套打

在银行、医院等系统中,套打的需求非常常见,而前面所提到的方案中只有 pdf 和 applet 两种方式支持套打,但需要开发人员自行解决多页打印的问题。而润乾报表通过简单几步就可以实现多页套打,并且保证数据不错位:

1) 扫描空白票据

2) 将扫描后的票据图片作为报表背景图

3) 根据背景图修改报表的行列设置

4) 打印时直接输出报表数据即可

3、 批量打印

批量打印需求在很多系统中也屡见不鲜,也就是在 web 上点击一次打印按钮,同时打印输出多张报表,润乾报表内置了两种批量打印方式供用户直接选择使用:applet 批量打印和 pdf 批量打印。

我们可以直接使用内置 jsp 通过 URL 实现批量打印功能:

pdf 批量打印:http://localhost:6868/demo/reportJsp/pdfBatchPrint.jsp?report={t1.rpx}{t2.rpx(arg1=1;arg2=2)}

applet 批量打印:

http://localhost:6868/demo/reportJsp/directprint.jsp?report={t1.rpx}{t2.rpx(arg1=1;arg2=2)}

总之,润乾报表不仅可以快速设计报表,而且可以完美实现 web 打印需求,简直是个不可多得的利器。