itext 7.1.6合并文档时出现内存不足错误

时间:2019-12-23 09:31:29

标签: itext itext7

从多个文档创建整理时,java.lang.OutOfMemoryError:服务器中出现Java堆空间错误,应用程序关闭。

下面是一个示例代码段,

PdfReader objReader = new PdfReader(new ByteArrayInputStream(content));
PdfDocument srcPdfDocument = new PdfDocument(objReader);
Document srcDocument = new Document(srcPdfDocument);

WriterProperties wp = new WriterProperties();
wp.setPdfVersion(PdfVersion.PDF_1_7);
PdfDocument destPdfDoc = new PdfDocument(new PdfWriter(baos,wp));
Document destDocument = new Document(destPdfDoc);

PdfMerger merger = new PdfMerger(destPdfDoc, true,true);
merger.merge(srcPdfDocument, 1, srcPdfDocument.getNumberOfPages());

//finally block
finally{
 if(srcPdfDocument != null && !srcPdfDocument.isClosed()) {
 srcPdfDocument.close();
 }
 if(srcDocument != null) {
 srcDocument.close();
 }
 if(destPdfDoc != null && !destPdfDoc.isClosed()) {
 destPdfDoc.close();
 }
 if(destDocument != null) {
 destDocument.close();
 }
}

如果整理了大型文档(文件大小,以GB为单位)或标记结构损坏的文档(服务器日志中的错误-com.itextpdf.kernel.pdf.tagging.ParentTreeHandler标记结构损坏:遇到无效的标记内容引用-不会'不会引用任何页面或任何mcid。此内容引用将被忽略),将引发内存不足错误。

有什么方法可以整理文档而不将字节保留在内存中

使用Itext7。请注意,使用Itext 5(PdfCopy),该功能可以正常工作而不会出现问题。

0 个答案:

没有答案