页面中报表组直接展现pdf

在润乾报表的展现页面中,可以将报表组导出pdfexcelword等形式的文件,现在需求需要将pdf展现在页面中,然后在进行操作。

 

现在为了完善这个功能,增加其易用性,将此功能封装成标签,可以通过和润乾里导出功能类似的方式调用,方便使用。

 

首先实现pdf展现的后台功能:创建一个servlet

可接受参数为:action fileparams分别处理是否执行展现功能、报表组名称以及传入报表组中的参数。

根据fileparams计算报表组中的每张报表,将结果存放在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&params=rpg=group_1;&t_i_m_e=1340340233151&isGroup=1′);

}

</script>

 

只需要在该类中通过stringbuffer中拼出相关的js串即可。其中fileparams通过之前定义的变流获得,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>

该标签有四个属性:

第一个属性:

groupFileNamereport: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,然后由用户自行处理.

 

需要注意下:页面展现pdfIE的安全设置有关,如果过高的话会直接提示下载.