您何时何地关闭 PDDocument?

我从后端源获得了几个 pdf 的字节数组。

我将所有这些字节数组加载到 PDDocuments 中并将它们添加到列表中,如下所示:


List<PDDocument> pdfs = new ArrayList<>();

for (...the amount of bytearrays...) {

    PDDocument pdf = PDDocument.load(bytearray);

    pdfs.add(pdf);

}

然后我将这些 pdf 合并到一个 PDDocument 中:


PDDocument mergedPdf = new PDDocument();

PDFMergerUtility PDFmerger = new PDFMergerUtility();

for(...all pdfs in list...) {

    PDFmerger.appendDocument(mergedPdf, pdf);

}

然后我将合并的 PDF 保存到一个文件中:


mergedPdf.save("c:\temp\mergeddoc.pdf");

我现在的问题是:我在哪里调用这些 pddocuments 上的 close() 方法?

这是加载后吗?但这意味着我无法与他们进一步合作,因为我已经关闭了 pdf。还是只有在我保存后才需要这样做?


喵喵时光机
浏览 142回答 1
1回答

呼唤远方

如果您close()在保存目标文档后调用源文档,那么您是最安全的。旧 PDFBox 2.0.* 版本中存在错误,其中目标 PDF 仍然保留源 PDF 上的引用 - 通常这些是标记的 PDF。即将发布的(可能在 3 月)版本 2.0.14 修复了所有这些错误,希望您可以在调用appendDocument().&nbsp;显然你不能close()在加载后直接调用,因为appendDocument().
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java