如何将两个jrxml jasper报告合并为一个单独的pdf输出文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将两个jrxml jasper报告合并为一个单独的pdf输出文件相关的知识,希望对你有一定的参考价值。

我有两个带有两个不同数据源的JRXML文件。在第一个jasper报告数据源是JRXmlDataSource,在第二个jasper报告数据源是JRResultSetDataSource

try
{
            conn= objConnector.getConnection();
            conn.setAutoCommit(false);

            PreparedStatement ps = conn.prepareCall("{ call Sp_DEMO(?) }");
            ps.setString(1,condition);
            ResultSet rs = ps.executeQuery();

            JasperReport jreport1 = JasperCompileManager.compileReport("d:\\JRXML\\ECGImage.jrxml");
            JasperPrint jprint1 = JasperFillManager.fillReport(jreport1, new HashMap(), new JRResultSetDataSource(rs));
            jprintlist.add(jprint1);
            JasperReport jasperReport = JasperCompileManager.compileReport("d:\\JRXML\\RadiologyReport.jrxml");

                JRXmlDataSource xmlDataSource = new JRXmlDataSource("d:\\abc.xml"+, "/X-RayReport/Type");
                JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap(),xmlDataSource);
                jprintlist.add(jasperPrint);


            File file = new File("d:\\demo.pdf");
            if(file.exists())
            {
                file.delete();
            }
            JRExporter exporter = new JRPdfExporter();
            exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT_LIST, jprintlist);
            OutputStream output = new FileOutputStream(new File("d:\\demo.pdf"));
            exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM, output);
            exporter.exportReport();

        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

我想创建单个pdf文件作为两个jrxml文件的输出。

答案

嗯,这就是JasperReport子报告的意思。你必须创建另一个.jrxml作为主报告,并将其中现有的两个作为“子报告”包括在内。所以你将有一个输出。

要创建子报告(如果您不知道),请参考这些tutoriale:JasperReports - Create SubReportsSubReports

从你有两个不同的数据源的事实,我认为你也可能需要阅读这个:Pass parameter to subreports

您可能需要将此不同的数据源作为参数传递给子报表,因此不会在JasperPrint对象实例中传递。

另一答案

你可以像这样合并上面两个pdf

List pages = jasperPrint.getPages();
for (int j = 0; j < pages.size(); j++) {
   JRPrintPage object = (JRPrintPage)pages.get(j);
   jprint1.addPage(object);
}

jprint1将是您的单一输出。

以上是关于如何将两个jrxml jasper报告合并为一个单独的pdf输出文件的主要内容,如果未能解决你的问题,请参考以下文章

利用程序将.jrxml导出为.jasper文件并用PDF显示

如何编译 jrxml 以获取 jasper?

jasper文件与jrxml文件的关系。

使用 jasper 将日期导出到 Excel

如何在报表中插入自定义Groovy方法?

JasperReport由jrxml->jasper编译出错:Too many groovy classes were generated.