Jasper API仅打印第一个报告,其他报告则打印为空白

时间:2019-05-22 12:54:21

标签: java jasper-reports

我们正在使用jasper API(JasperFillManager.fillReport,JasperExportManager.exportReportToPdfFile)

我们希望使用不同的参数在循环中执行该报告,因此添加了以下代码

    JasperPrint jasperPrint = null;
            // Fill report
            Iterator i1 = l1.iterator();
            Iterator i2 = l2.iterator();
            int i = 1;
            while (i1.hasNext() && i2.hasNext()) {
                parameters.put("SUBJECTOID", (String) i1.next());
                parameters.put("HISTORYRECORD", (String) i2.next());
                try (ProfilePoint fillReport = ProfilePoint
                        .profileAction("ProfAction_ReportHelper_fillJasperReport")) {
                    jasperReport = JasperCompileManager.compileReport(jrxmlPath);

                    jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, emptyDataSource);
                    System.out.println("fillReport**********" + i);

                }

                // Export to PDF
                try (ProfilePoint exportReport = ProfilePoint
                        .profileAction("ProfAction_ReportHelper_exportJasperReport")) {
                    JasperExportManager.exportReportToPdfFile(jasperPrint,
                            "C:\\JASPER\\JASPEROUTPUT\\Report" + i + ".pdf");
                    System.out.println("exportReportToPdfFile**********" + i);
                }
                i++;
                jasperPrint = null;
                jasperReport = null;

那么我们有15个参数,发生了什么事,因此生成了15个PDF文件,但是只有第一个PDF文件包含数据,其他14个为空白。

我们尝试了多种方法,例如一次编译,多次编译,将jasper代码提取到方法中,但结果仍然相同

在jasper或类似内容中是否有任何缓存或某种设置?

1 个答案:

答案 0 :(得分:0)

感谢@ dada67 征求意见

我为每次迭代传递了一个新的emptydatasource,并且它起作用了。

非常感谢.. !!!