Java 何时何地关闭PDI文档?

Java 何时何地关闭PDI文档?,java,pdfbox,Java,Pdfbox,我从后端源获取多个PDF的ByteArray。 我将所有这些ByteArray加载到PDDocuments中,并将它们添加到列表中,如下所示: List<PDDocument> pdfs = new ArrayList<>(); for (...the amount of bytearrays...) { PDDocument pdf = PDDocument.load(bytearray); pdfs.add(pdf); } 然后我将mergedPdf

我从后端源获取多个PDF的ByteArray。
我将所有这些ByteArray加载到PDDocuments中,并将它们添加到列表中,如下所示:

List<PDDocument> pdfs = new ArrayList<>();
for (...the amount of bytearrays...) {
    PDDocument pdf = PDDocument.load(bytearray);
    pdfs.add(pdf);
}
然后我将mergedPdf保存到一个文件中:

mergedPdf.save("c:\temp\mergeddoc.pdf");
我现在的问题是:我在哪里调用这些pddocuments上的close()方法?
这是在装完之后吗?但这意味着我不能再和他们合作了,因为我已经关闭了PDF。
或者,这只是在我保存后的最后才需要吗?

如果在保存目标文档后对源文档调用
close()
,那么您是最安全的。旧版本的PDFBox 2.0.*中存在漏洞,其中目标PDF仍然保留源PDF上的引用-通常这些都是标记的PDF。即将发布的2.0.14版(可能在3月份发布)修复了所有这些错误,希望您可以在调用
appendDocument()
后关闭源PDF。显然,您不能在加载后直接调用
close()
,因为
appendDocument()

需要文档,Tilman的回答是否充分回答了您的问题?还是仍然有开放点?我想知道,因为你没有把他的回答记为接受。
mergedPdf.save("c:\temp\mergeddoc.pdf");