簡體   English   中英

JasperReports-將大數據從數據庫處理為PDF

[英]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;
    }

我想知道:

  • 在這種情況下,我該如何使用CPU的多核?
  • 還有另一種策略可以做到這一點嗎?

我建議兩件事。 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM