页面中报表组直接展现pdf
在润乾报表的展现页面中,可以将报表组导出pdf、excel、word等形式的文件,现在需求需要将pdf展现在页面中,然后在进行操作。
现在为了完善这个功能,增加其易用性,将此功能封装成标签,可以通过和润乾里导出功能类似的方式调用,方便使用。
首先实现pdf展现的后台功能:创建一个servlet
可接受参数为:action 、file和params分别处理是否执行展现功能、报表组名称以及传入报表组中的参数。
根据file和params计算报表组中的每张报表,将结果存放在List<IReport>中。
通过Response中具有pdf的属性,再结合润乾的com.view.pdf.PdfReport类实现此需求。
response.setContentType(“application/pdf”);
PdfReport localPdfReport = new PdfReport(response.getOutputStream());
for (IReport report : reportList) {
localPdfReport.export(new PageBuilder(report));
}
localPdfReport.save();
然后创建一个类继承TagSupport类,用于生成的页面中通过标签创建页面展现pdf功能的js,定义标签中的三个属性:报表组名称、是否使用pdf功能、功能按钮名称、参数名称:
groupFileName = “”;
needSaveAsPdf = “”;
pdfLabel = “”;
params = “”;
先直接将js准备好:
<script type=”text/javascript”>
function group_saveAsPdf2(){
window.open(‘http://localhost:8080/api/servlet/PdfGroupServlet?action=save&file=group_1.rpg¶ms=rpg=group_1;&t_i_m_e=1340340233151&isGroup=1′);
}
</script>
只需要在该类中通过stringbuffer中拼出相关的js串即可。其中file和params通过之前定义的变流获得,t_i_m_e则通过new Date().getTime()
创建一个pdfReportGroup.tld的标签.内容为servlet以及上文中提到的四个属性.
<tag>
<name>savePdf</name>
<tag-class>com.runqianapp.pdfReportGroup.SaveReportGroupToPdfTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>groupFileName</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>needSaveAsPdf</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>pdfLabel</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>params</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
功能性的内容已经完成,剩下的就是在jsp中如何设置:
在展现报表jsp页面引入tld:
<%@ taglib uri=”/WEB-INF/pdfReportGroup.tld” prefix=”pdf”%>
标签:
<pdf:savePdf groupFileName=”<%=report %>” needSaveAsPdf=”true”
pdfLabel=”" params=”<%=param.toString() %>”></pdf:savePdf>
该标签有四个属性:
第一个属性:
groupFileName是report:group标签的groupFileName的值,必须属性
第二个属性:
needSaveAsPdf表示是否显示保存pdf文件按钮,默认值是“false”,可选属性
第三个属性:
pdfLabel:是为保存pdf文件按钮设置的显示值,默认是“导出pdf”,可选属性
第四个属性:
Params:是report:group标签的params的值,可选属性。
不显示导出pdf标签,也可以跟报表标签一样通过调用标签内的js方法导出,通过grouptoolbar.jsp中的js方法名为:group_saveAsPdf2();由于润乾中的导出报表组pdf用的是group_saveAsPdf(),所以这里加了个标识区别,否则名称相同会有错误,同样在类中拼js名称时也需要注意要避免和润乾已有的名称重复.
web.xml文件需加如servlet配置:
<servlet>
<servlet-name>PdfGroupServlet</servlet-name>
<servlet-class>com.runqianapp.pdfReportGroup.PdfGroupServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PdfGroupServlet</servlet-name>
<url-pattern>/servlet/PdfGroupServlet</url-pattern>
</servlet-mapping>
配置好后,访问jsp页面,会在功能条中出现新的功能按钮:
点击后,页面中直接展现pdf,然后由用户自行处理.
需要注意下:页面展现pdf跟IE的安全设置有关,如果过高的话会直接提示下载.