我从后端来源获得几个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文件。
还是仅在保存后才需要?
答案 0 :(得分:0)
如果在保存目标文档后在源文档上调用close()
,则将是最安全的一面。在较旧的PDFBox 2.0。*版本中存在一些错误,其中目标PDF仍然在源PDF上保留引用-通常这些标签都是带标记的PDF。即将发布(可能在3月)的2.0.14版有望解决所有这些错误,您可以在调用appendDocument()
之后关闭源PDF。显然,由于close()
需要该文档,因此加载后无法直接调用appendDocument()
。