[英]JasperReports - Handle big data from database to PDF
我有一個選擇報告,可以返回大約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;
}
我想知道:
我建議兩件事。 1.嘗試從JasperReport本身觸發查詢,而不是將查詢存儲在Arraylist中,然后將其傳遞給報表。
2.使用Report Virtualizer 。根據您的需要,可以使用Swap Virtualizer或Gzip虛擬器。 Jasper聲稱Gzip虛擬化程序將jasper對象壓縮到原始jasper對象的1/10。
無論您的數據量有多大,Virtualizer都會確保始終使用該Virtualizer生成報告。 我已經使用GZip虛擬器親自打印了25000份報告,超過500MB的報告,以確保其確實正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.