公司的订单管理系统模块中有一个需求是导出报表并打印,最初想用java通过jacob调用Bartender条码软件打印,但最终失败告终。最后决定用润乾报表整合项目,在项目中遇到的问题总结如下:
在解决润乾报表的打印类问题时,⾸先要知道打印与哪些⽂件相关,下⾯就列出了与打印相关的⽂件及位置:
1.runqianReport4Applet.jar 位置:应⽤根⽬录下
2.report4.jar 位置:web-inf/lib⽬录下
3.j2re-1_4_1-windows-i586-i.exe 位置:应⽤根⽬录下
在reportConfig.xml中,有两个属性也与打印相关,分别是:jreInstallName和jreVersion。
另外java项目整合润乾报表 lib下的常用jar包下载:https://download.csdn.net/download/kay523393/85288796
另外,⽬前润乾报表提供的打印⽅式有以下⼏种:
1.直接打印 (不预览直接输出报表到打印机打印)
2.打印预览后打印(常规打印⽅式)
3.套打(多⽤于票据打印即打印纸张和格⼦的⼤⼩都是固定的,⼀般采取背景图的⽅式打印)
4.批量打印(⼀次性打印多张报表)
打印类的问题⼀般分为以下⼏类:
1.打印类错误
这种错误⼀般是由于检查打印类⽂件放置的位置不对,打印类与report4包不匹配,浏览器安全级别设置不正确等原因造成的。
例如:展现报表正常,点击打印后,弹出空⽩对话框,⽆法正常打印。
此问题就是由于打印类与report4包不匹配造成的,更新report4包的时候,⼀定要⼀起更新runqianReport4Applet.jar
report4、runqianReport4Applet.jar包下载链接:https://download.csdn.net/download/kay523393/85288738
2.打印结果不正确
这种错误⼀般是由于报表模版设置字体不正确,相关的打印设置属性没有正确配置,打印机本⾝设置有错误等原因造成的。
例如:设计器和服务器上浏览报表都正常,只是打印出来的纸上,出现数据丢失的情况。
此问题是由于报表中字体设置的不对,使⽤了默认的Dialog字体,⽽这种字体是java的虚拟字体,在操作系统中是不存在的,建议当报表中数据有汉字或者特殊字符的时候,尽量使⽤宋体或其他在操作系统中存在的字体,即可避免这种错误的发⽣。
再例如:在打印页⾯设置了页边距,但打印到纸上时,发现设置的页边距没有起作⽤。
此问题多数发⽣在⽼式的针式打印机上,由于针式打印机存在物理边距,这由打印机本⾝所限制,超过此范围的边距打印机也⽆法识别,只要控制在物理边距的范围内,就可以正常打印了。
3.打印预览效果不正确。
这类问题⼀般与报表模版设计的不合理有很⼤关系。
例如;报表中含有嵌⼊式⼦报表,且⼦报表数据量很多,导致打印时会报某某⾏⾼度超过给定的纸张⾼度,⽆法打印。
由于嵌⼊式⼦报表是局限在⼀个格⼦内,不影响周边格⼦,⽽仅仅是撑⼤所在的单元格,很可能会出现⼦报表过长或过宽,导致报表在⼀页
纸内⽆法分页(⼦报表在主表中规定不能分页),就会出现这个错误,解决办法就是把嵌⼊式改为引⼊式,就可以使报表正常打印了。
总结起来,打印问题与报表的设计,部署,操作都密不可分,其中哪⼀个环节出现问题都有可能导致打印出问题,所以,处理这类问题的步骤⼀般是先检查报表模版,再定位,重现问题,最终找到问题所在并解决。