在 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 打印需求,简直是个不可多得的利器。