如何使用 itext7 将页面从一个 PdfDocument 复制到另一个

How do I copy pages from one PdfDocument to another with itext7

我有 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 方法旨在处理同一文档的页面。

要复制不同文档的页面,应该使用 PdfMergercopyPagesTo 功能。

前一个很简单:

    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();