合并两个Jasper报告

我有一个带有下拉菜单的Web应用程序,用户可以从中选择报表的类型。report1,report2,report3等。

基于所选的报告,Jasper报告将在服务器上编译并以PDF格式作为弹出窗口打开。

在服务器端,我使用下面的代码(例如对于report1)使用一种单独的方法来实现每个报告:

JRBeanCollectionDataSource report1DataSource = new JRBeanCollectionDataSource(resultSetBeanListReport1);

InputStream inputStreamReport1 = new FileInputStream(request.getSession().getServletContext ().getRealPath(jrxmlFilePath + "report1.jrxml"));

JasperDesign jasperDesignReport1 = JRXmlLoader.load(inputStreamReport1);

JasperReport jasperReportReport1 = JasperCompileManager.compileReport(jasperDesignReport1);

bytes = JasperRunManager.runReportToPdf(jasperReportReport1, titleMapReport1, report1DataSource);

同样,report2在具有以下代码的单独方法中:

JRBeanCollectionDataSource invstSummDataSource = new JRBeanCollectionDataSource(resultSetBeanListInvstOfSumm);

InputStream inputStreamInvstSumm = new FileInputStream(request.getSession().getServletContext().getRealPath(jrxmlFilePath + "investSummary.jrxml"));

JasperDesign jasperDesignInvstSumm = JRXmlLoader.load(inputStreamInvstSumm);

JasperReport jasperReportInvstSumm = JasperCompileManager.compileReport(jasperDesignInvstSumm);

bytes = JasperRunManager.runReportToPdf(jasperReportInvstSumm, titleMapInvstSumm, invstSummDataSource);

现在,我有一个要求,如果从下拉列表中选择了report1,则生成的PDF应该在同一PDF中一个接一个地包含所有报告。

如何结合以上两行代码最终生成单个PDF?

回答:

这是合并多个碧玉印刷品的示例代码

List<JasperPrint> jasperPrints = new ArrayList<JasperPrint>();

// Your code to get Jasperreport objects

JasperReport jasperReportReport1 = JasperCompileManager.compileReport(jasperDesignReport1);

jasperPrints.add(jasperReportReport1);

JasperReport jasperReportReport2 = JasperCompileManager.compileReport(jasperDesignReport2);

jasperPrints.add(jasperReportReport2);

JasperReport jasperReportReport3 = JasperCompileManager.compileReport(jasperDesignReport3);

jasperPrints.add(jasperReportReport3);

JRPdfExporter exporter = new JRPdfExporter();

//Create new FileOutputStream or you can use Http Servlet Response.getOutputStream() to get Servlet output stream

// Or if you want bytes create ByteArrayOutputStream

ByteArrayOutputStream out = new ByteArrayOutputStream();

exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrints);

exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);

exporter.exportReport();

byte[] bytes = out.toByteArray();

以上是 合并两个Jasper报告 的全部内容, 来源链接: utcz.com/qa/409543.html

回到顶部