前言:
有些情况下,比如证书、单据等,浏览报表时希望连续查看在一个页面中,但打印时因为其证书、单据等的特性导致横纵向打印是有要求的,而对于润乾报表来说定义横纵向只能对整个报表进行设置,不能对报表的不同区域进行特别设置,这就要求我们应该可以提供一个展示时报表连续,打印时横竖连续打印的方案。
方案一:
润乾默认打印只能对单一报表对象横纵向设置识别,所以在不改动产品的情况下,打印时也只能打印单一报表对象或者报表组对象,这就要求我们设计该方案的最基本想法就是有多少张报表样式就要做多少张Raq,这样我就要考虑展示时如何让其在一个页面连续展现,因为润乾可以采用标签发布报表Raq的方式进行展示,这样我们就可以想到在一个Jsp中用多个标签进行多个Raq的发布展示,屏蔽掉每个报表所特有的功能按钮和分页提示后,即可达到展示需求的效果;然后来说打印,因为是客户端打印,要让终端用户在点打印时感觉不到后台在处理多张报表,所以我们调用润乾的打印报表组功能,终端用户点击一次打印后即可实现多张报表打印,但因为要计算报表组所以我们还要考虑如何用简单的方式进行计算报表组又不让其显示,我这里所采用的方式是在展示jsp中用<iframe>调用报表组的页面,然后将<iframe>的height属性设置为0,让其隐藏,最后在展示报表页面自定义打印超链接调用report5.group_print();方法实现报表组打印。
方案二:
方案二利用润乾比较成熟的批量打印的例子,展示依然采用方案一的展示方法,打印在页面调用<object>直接处理润乾打印类,再结合润乾提供的js方法runqian_getPrintReports();来设置需要批量打印的报表,该js返回的格式为{ 无参数报表名}{ 报表1(参数1=value1;参数2=value2;…)}{ 报表2(参数1=value1;参数2=value2;…)}…,利用java代码拼接此字符串传给润乾的打印类,再用<object>标签调用进行打印。
结论:
第一种方案大都采用润乾现有功能只是进行适当的组合,代码量和思路都比较简单。
第二种方案代码量比较大,而且调用了润乾的js,思路也不是太好想,但灵活性更高。
两种方案无论哪种方法缺点都比较明显,就是打印时会重新计算报表,所以展示和打印会耗费两次资源,但鉴于这种打印需求的情况大多数据量不是太大,所以此两种方案还是可以满足客户需求。