润乾报表将打印与页面展示分离

需求描述:

在实际的项目中,一张报表可能既要在网页中展示,同时又需要打印。在网页中展示时,为了页面的美观,报表不分页;而在打印时,由于纸张的限制,报表必须按照指定的格式分页。

问题分析

在润乾报表中,当用户点击页面上的”打印”图标时,系统默认按照当前在页面中展示的报表格式进行打印。

在系统内部,当用户点击打印后,系统根据报表文件生成报表打印对象。该对象经过处理,发送给打印设备。默认情况下使用的报表文件和页面展示所使用的报表文件相同。

问题的关键正在于此,如果改变生成报表打印对象的报表文件,不使用默认的报表文件,而使用用户指定的报表文件。那么打印和页面展示就会被分离开来。

这样,我们需要为页面展示和打印各设计一张报表,使得页面和打印分离开来。

解决方法示例:

第一步, 设计两个报表文件,一个命名为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