gpt4 book ai didi

java - JasperReports - 处理从数据库到 PDF 的大数据

转载 作者:行者123 更新时间:2023-11-30 04:24:53 25 4
gpt4 key购买 nike

我有一个报告,它接受一个选择,返回大约 900k 记录(大约 100MB 的数据),我需要用它创建一个 PDF

所以,我的实现很简单:我从 JDBC 查询获取数据,放入 ArrayList 并将其传递到我的报告。我遇到了一些内存问题,但我修复了它,我现在的问题是 CPU 处理(始终为 100%),这使得我的进程崩溃。

我的代码非常简单:

 public OutputStream getOutputStream(OutputStream out) {
try {
JasperPrint print = JasperFillManager.fillReport(jasperName, params, fillList);
JRExporter exporter = format.getExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);
exporter.exportReport();

} catch (Exception e) {
throw new RuntimeException("Error getting the stream", e);
}
return out;
}

我想知道:

  • 在这种情况下,我如何使用 CPU 的多个内核?
  • 还有其他策略可以做到这一点吗?

最佳答案

我建议的两件事。1. 尝试从 JasperReport 本身触发查询,而不是将其存储在 Arraylist 中,然后将其传递给报表。

2.使用Report Virtualizer。根据您的需要,您可以使用Swap Virtualizer 或Gzip virtualizer。 Jasper 声称 Gzip 虚拟器将 jasper 对象压缩到原始 jasper 对象的 1/10。

虚拟器将确保无论您的数据有多大,始终使用虚拟器生成报告。我亲自使用 GZip 虚拟器打印了超过 25000 份超过 500MB 大小的报告,以确保它确实正常工作。

关于java - JasperReports - 处理从数据库到 PDF 的大数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16194556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com