Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, handler, out); handler.setResultingOutputStream(out);
增加堆大小 你可以通过增加堆大小来解决内存问题,但是这并不是最佳解决方案。堆区越大,垃圾回收的消耗也就越高。在设置堆大小之前,请确保没有其他进程或应用程序正在使用该服务器。
使用PDFBoxRenderer 默认的渲染器可能会占用大量内存。尝试使用PDFBoxRenderer来减少内存使用。以下是示例代码:
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, renderer, out);
PDFBoxRenderer renderer = new PDFBoxRenderer();
FOUserAgent userAgent = fopFactory.newFOUserAgent();
...
for (int i = 0; i < numDocs; i++) {
// page sequence setup
PageSequenceId pageSequenceId = new PageSequenceId();
pageSequenceId.setDocumentIndex(Integer.toString(i));
...
Result res = new SAXResult(fop.getDefaultHandler());
// convert to PDF
pdfDoc[i] = new DocumentPdf();
pdfDoc[i].configurePdfRenderer(userAgent);
pdfDoc[i].renderTo(res);
}
System.gc();