Удалить страницу из PDF - PullRequest
       11

Удалить страницу из PDF

8 голосов
/ 06 сентября 2011

Я сейчас использую iText и мне интересно, есть ли способ удалить страницу из файла PDF?

Я открыл его с помощью ридера и т. Д., И я хочу удалить страницу, прежде чем она будет сохранена обратно в новый файл; как я могу это сделать?

Ответы [ 5 ]

12 голосов
/ 06 января 2012

«Лучшим» способом «удаления» страниц является

reader.selectPages("1-5,10-12");

Это означает, что мы выбираем только страницы 1-5, 10-12, эффективно «удаляя» страницы 6-9.

8 голосов
/ 28 апреля 2014

Получить читатель существующего PDF-файла по

PdfReader pdfReader = new PdfReader("source pdf file path");

Теперь обновите читатель

 pdfReader.selectPages("1-5,15-20");

затем получите объект pdf stamper для записи изменений в файл с помощью

PdfStamper pdfStamper = new PdfStamper(pdfReader,
                new FileOutputStream("destination pdf file path"));

закрыть PdfStamper на

pdfStamper.close();

Он также закроет PdfReader.

Приветствия .....

1 голос
/ 06 сентября 2011

Вы можете использовать PdfStamper в сочетании с PdfCopy.

В этот ответ объясняет, как копировать весь документ.Если вы измените критерии цикла в примере кода, вы можете удалить ненужные страницы.

0 голосов
/ 13 октября 2017

Для iText 7 я нашел этот пример:

    PdfReader pdfReader = new PdfReader(PATH + name + ".pdf");
    PdfDocument srcDoc = new PdfDocument(pdfReader);
    PdfDocument resultDoc = new PdfDocument(new PdfWriter(PATH + name + "_cut.pdf"));
    resultDoc.initializeOutlines();

    srcDoc.copyPagesTo(1, 2, resultDoc);

    resultDoc.close();
    srcDoc.close();

См. Также здесь: клон-переупорядочивание страниц и здесь: clone-split-pdf-file

0 голосов
/ 08 марта 2016

Вот функция удаления, готовая для реального использования. Доказано, что работает нормально с itext 2.1.7. Он также не использует «резкую печать».

/**
 * Removes given pages from a document.
 * @param reader    document
 * @param pagesToRemove pages to remove; 1-based
 */
public static void removePages(PdfReader reader, int... pagesToRemove) {
    int pagesTotal = reader.getNumberOfPages();
    List<Integer> allPages = new ArrayList<>(pagesTotal);
    for (int i = 1; i <= pagesTotal; i++) {
        allPages.add(i);
    }
    for (int page : pagesToRemove) {
        allPages.remove(new Integer(page));
    }
    reader.selectPages(allPages);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...