润乾报表将打印与页面展示分离
需求描述:
在实际的项目中,一张报表可能既要在网页中展示,同时又需要打印。在网页中展示时,为了页面的美观,报表不分页;而在打印时,由于纸张的限制,报表必须按照指定的格式分页。
问题分析:
在润乾报表中,当用户点击页面上的”打印”图标时,系统默认按照当前在页面中展示的报表格式进行打印。
在系统内部,当用户点击打印后,系统根据报表文件生成报表打印对象。该对象经过处理,发送给打印设备。默认情况下使用的报表文件和页面展示所使用的报表文件相同。
问题的关键正在于此,如果改变生成报表打印对象的报表文件,不使用默认的报表文件,而使用用户指定的报表文件。那么打印和页面展示就会被分离开来。
这样,我们需要为页面展示和打印各设计一张报表,使得页面和打印分离开来。
解决方法示例:
第一步, 设计两个报表文件,一个命名为test.raq,另一个命名为test_pager.raq。
第二步, 将这连个报表放在报表的”应用资源路径”下。”应用资源路径”下存放报表文件。点击工具栏的”配置”,在弹出的下拉框中选择”选项”,弹出的对话框中选择”文件”选项卡。应用资源路径如图:
第三步, 在需要展示的jsp页面中配置。部分代码如下:
<html>
<body topmargin=0 leftmargin=0 rightmargin=0 bottomMargin=0>
<%
…………………………
String report_pager = new String(“”);// add by hufei at 2010-08-04
……………………………………………………
report_pager = report.substring(0,iTmp)+”_pager.raq”;
//add by hufei at 2010-08-04:如果页面展示的报表命名为a.raq,那么对应的分页打印的报表名称就应该是a_pager.raq
%>
<table align=”center” width=”100%” height=”100%”>
<tr><td>
<report:html name=”report1″ reportFileName=”<%=report%>”
funcBarLocation=”"
needPageMark=”yes”
needPrint=”yes”
printedRaq=”<%=report_pager%>”
generateParamForm=”no”
params=”<%=param.toString()%>”
width=”-1″
exceptionPage=”/reportJsp/myError2.jsp”
/>
</td></tr>
</table>
</body>
</html>
第四步, 在页面中使用该页面展示报表,最终效果如下图。
展示页面
用于打印的报表
总结:
在润乾报表中,可以利用”printedRaq“报表标签使得报表的展示与打印完全分离,充分体现了润乾报表的灵活性。
注明:
printedRaq:被打印的报表文件名,路径相对于reportFileHome。