Itext 7.1.6合并文档时内存不足错误

Itext 7.1.6合并文档时内存不足错误,itext,itext7,Itext,Itext7,当从多个文档创建collate时,java.lang.OutOfMemoryError:服务器中出现java堆空间错误,应用程序停止运行 下面是一个示例代码片段 PdfReader objReader = new PdfReader(new ByteArrayInputStream(content)); PdfDocument srcPdfDocument = new PdfDocument(objReader); Document srcDocument = new Document(srcP

当从多个文档创建collate时,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。此内容引用将被忽略),抛出内存不足错误

有没有什么方法可以在不将字节保存在内存中的情况下整理文档


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

对于大型文档,您很可能需要分配更多内存。关于标记-itext 5是以一种几乎不知道标记的方式复制的,因此知道标记的复印机可能在itext 5没有出现的情况下出现问题。@Sangeetha,请提供一种重现问题的方法。例如,您可以提供代码来生成合并时导致内存问题的源文档。或者,您可以提供一个小文档,并将其多次合并到目标文档中