繁体   English   中英

如何将两个 jrxml jasper 报告合并为 1 个 pdf 同一页面

[英]How to merge two jrxml jasper report into 1 pdf same page

我尝试从这个站点回答将两个 jrxml jasper 合并为 1 个 pdf 文件。 创建的文件包含两页...

如何将两个 jrxml 合并为一个页面?

JasperPrint jasperPrint1 = JasperFillManager.fillReport(getClass().getResourceAsStream("/coba.jasper"), param, new JREmptyDataSource());
JasperPrint jasperPrint2 = JasperFillManager.fillReport(getClass().getResourceAsStream("/coba2.jasper"), param2, new JREmptyDataSource());

            List pages = jasperPrint2.getPages();
            for (int i = 0; i < pages.size(); i++) {
                JRPrintPage object = (JRPrintPage)pages.get(i);
                jasperPrint1.addPage(object);
            }                                   
JRExporter exporter = new JRPdfExporter();
            exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT_LIST, jasper);
            OutputStream output = new FileOutputStream(new File("d:\\demo.pdf"));
            exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM, output);
            exporter.exportReport();

这是因为您要添加页面addPage ,因此需要将页面上的元素添加到另一个页面。

JRPrintPage page1 = jasperPrint1.getPages().get(0);
List<JRPrintPage> pages2 = jasperPrint2.getPages();
for (JRPrintPage page : pages2) {
   List<JRPrintElement> elements = page.getElements();
   for (JRPrintElement element : elements) {
     page1.addElement(element);
   }
}

此代码将在jasperPrint1第 1 页中添加jasperPrint2 (在其所有页面中)的所有元素

注意:错误处理( NullpointerArrayIndexOutOfBounds )超出了示例的范围。

您还可以考虑使用部件来编写报告。 我不确定这会带来什么优点或缺点。 也许这会解决一些页码问题。

报告要么呈现一堆乐队或部分(选择一个):

  • 乐队根据其拆分样式填充页面。

  • 每个部件包括一个限定的页数的。

为了完整性:另一个变体是用多个JasperPrint对象填充 pdf 导出器,如https://stackoverflow.com/a/24117554/647213 中所述 这将是一个很晚的合并,因此可能无法解决页码问题(AFAIK)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM