您是否总是需要关闭一个新的 PDDocument 对象?

Do you always need to close a new PDDocument object?

您是否只需要在 load/save 操作后或每个新创建的 PDDocument 对象(特别是在执行 merge/split/... 操作时)关闭 PDDocument?

例如,假设我有 3 个从字节数组加载的 PDDocuments:

PDDocument pdf1 = PDDocument.load(bytearray1);
PDDocument pdf2 = PDDocument.load(bytearray2);
PDDocument pdf3 = PDDocument.load(bytearray3);

假设我然后将这 3 个 pdf 合并为一个 PDDocument:

PdfMergerUtility merger = new PdfMergerUtility();
PDDocument mergedPdf = new PDDocument();
mergedDocument.appendDocument(mergedPdf, pdf1);
mergedDocument.appendDocument(mergedPdf, pdf2);
mergedDocument.appendDocument(mergedPdf, pdf3);

我关闭了 3 个 pdf:

pdf1.close();
pdf2.close();
pdf3.close();

但是我现在还必须关闭 mergedPdf 还是不需要这个?

mergedPdf.close(); // is this needed?

您应该在完成所有 PDDocument 个对象后关闭它们,还有 mergedPdf。这是一个很好的做法,它可以避免内存泄漏。尽可能使用 try-with-resources。