У меня есть 2 PdfDocument и я хочу скопировать все страницы одного PDF-файла в другой. Оба являются действительными PDF-файлами.
Это мой код на данный момент, но он не добавляет страницы:
PdfDocument pdfDocument = new PdfDocument(writer);
PdfDocument srcPdf = new PdfDocument(reader);
for(int i=1; i<=srcPdf.getNumberOfPages(); i++) {
pdfDocument.addPage(srcPdf.getPage(i));
}
srcPdf.close();
//I close the other pdf at a later moment




Метод addPage предназначен для обработки страниц одного и того же документа.
Для копирования страниц разных документов следует использовать функционал PdfMerger или copyPagesTo.
Первый работает так просто:
PdfDocument mergedDoc = new PdfDocument(new PdfWriter(destination));
PdfMerger merger = new PdfMerger(mergedDoc);
for(File source : sources){
// set source pdf
PdfDocument sourcePdf = new PdfDocument(new PdfReader(source));
// merge
merger.merge(sourcePdf, 1, sourcePdf.getNumberOfPages()).setCloseSourceDocuments(true);
// close source
sourcePdf.close();
}
merger.close();
mergedDoc.close();
Последний тоже прост:
PdfDocument pdfDoc = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest));
PdfDocument insertDoc = new PdfDocument(new PdfReader(INSERT));
insertDoc.copyPagesTo(1, 1, pdfDoc, 4);
insertDoc.close();
Спасибо! Это работает для меня: srcPdf.copyPagesTo(1, srcPdf.getNumberOfPages(), pdfDocument);