您何时何地关闭PDDocument?

时间:2019-02-24 22:09:10

标签: java pdfbox

我从后端来源获得几个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);
}

然后将mergedPdf保存到文件中

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

我现在的问题是:在这些pddocuments上的哪里调用close()方法?
加载它们后是这个吗?但这意味着我无法再与他们合作,因为我已经关闭了pdf文件。 还是仅在保存后才需要?

1 个答案:

答案 0 :(得分:0)

如果在保存目标文档后在源文档上调用close(),则将是最安全的一面。在较旧的PDFBox 2.0。*版本中存在一些错误,其中目标PDF仍然在源PDF上保留引用-通常这些标签都是带标记的PDF。即将发布(可能在3月)的2.0.14版有望解决所有这些错误,您可以在调用appendDocument()之后关闭源PDF。显然,由于close()需要该文档,因此加载后无法直接调用appendDocument()