【问题标题】:How to merge two jrxml jasper report into 1 pdf same page如何将两个 jrxml jasper 报告合并为 1 个 pdf 同一页面
【发布时间】:2016-03-25 00:32:32
【问题描述】:

我尝试从这个站点回答将两个 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();

【问题讨论】:

    标签: java pdf jasper-reports


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      • Bands根据其拆分样式填满页面。

      • 部分由定义的页数组成。

      【讨论】:

        【解决方案3】:

        这是因为你要添加一个页面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)超出了示例的范围。

        【讨论】:

        • 谢谢Petter...我尝试了您的解决方案并且它有效...但是元素重叠...所以在将元素添加到该页面之前,我必须尝试获取第1页中元素的最后位置。 ..我会尽力做到这一点...谢谢你的回答
        猜你喜欢
        • 1970-01-01
        • 2016-01-28
        • 1970-01-01
        • 2013-06-13
        • 2017-10-14
        • 1970-01-01
        • 1970-01-01
        • 2016-01-18
        相关资源
        最近更新 更多