Как скопировать страницы из одного PdfDocument в другой с помощью 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
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
2 885
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Метод 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);

Patrick 03.04.2019 20:28

Другие вопросы по теме