ここでも同様のシナリオがありますが、1つのドキュメントで1000件のドキュメントのみをマージする必要があります。
私はPDFMergerUtility
クラスを使用しようとしましたが、私はOutOfMemoryError
となりました。そこで、私は自分のコードをリファクタリングして、PDFMergerUtilityを使用する代わりに、最初のページを読み込み(私のソースドキュメントは1ページのみ)読み込み、マージしました。そして今はうまくいきます。はもうありません。
public void merge(final List<Path> sources, final Path target) {
final int firstPage = 0;
try (PDDocument doc = new PDDocument()) {
for (final Path source : sources) {
try (final PDDocument sdoc = PDDocument.load(source.toFile(), setupTempFileOnly())) {
final PDPage spage = sdoc.getPage(firstPage);
doc.importPage(spage);
}
}
doc.save(target.toAbsolutePath().toString());
} catch (final IOException e) {
throw new IllegalStateException(e);
}
}