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

时间:2019-02-27 20:01:41

标签: java pdfbox

您是否只需要在执行加载/保存操作后或创建的每个新PDDocument对象(例如,执行合并/分割/ ...操作)时关闭PDDocument?

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

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?

1 个答案:

答案 0 :(得分:1)

使用完所有PDDocument对象,也应该关闭mergedPdf。这是一个好习惯,并且可以避免内存泄漏。尽可能使用try-with-resources。