是否可以直接将结果流式传输到pdf文件而不是先创建JasperPrint对象?我的JasperPrint对象可能变得非常大并且发生了java.lang.OutOfMemoryError ...
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, reportparameter.getAll(), dataSource);
// dead end
OutputStream output = new FileOutputStream(new File("C:/Users/bla/Desktop/test/JasperReport.pdf"));
JasperExportManager.exportReportToPdfStream(jasperPrint, output);
答案 0 :(得分:0)
我有点找到了解决方案......首先,您将JasperPrint对象写入磁盘,然后您可以流式传输内容并通过流创建PDF。 没有内存问题,但您需要先将结果保存在磁盘上。
OutputStream printOut = new FileOutputStream(new File("C:/Users/bla/Desktop/test/jasperprint.jasperprint"));
JasperFillManager.fillReportToStream(jasperReport, printOut, reportparameter.getAll(), dataSource);
printOut.close();
OutputStream output = new FileOutputStream(new File("C:/Users/bla/test/JasperReport.pdf"));
JasperExportManager.exportReportToPdfStream(new FileInputStream(new File("C:/Users/bla/Desktop/test/jasperprint.jasperprint")), output);
output.close();