从PDF中删除页面

时间:2011-09-05 21:18:13

标签: java pdf itext

我目前正在使用iText,我想知道是否有办法从PDF文件中删除页面?

我已经用读卡器等打开了它,我想删除一个页面,然后将其保存回新文件;我怎么能这样做?

5 个答案:

答案 0 :(得分:12)

'更好''删除'页面的方法正在进行

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

这意味着我们只选择页面1-5,10-12有效地“删除”第6-9页。

答案 1 :(得分:8)

通过

获取现有pdf文件的读者
PdfReader pdfReader = new PdfReader("source pdf file path");

现在通过

更新阅读器
 pdfReader.selectPages("1-5,15-20");

然后获取pdf压模对象,通过

将更改写入文件
PdfStamper pdfStamper = new PdfStamper(pdfReader,
                new FileOutputStream("destination pdf file path"));

通过

关闭PdfStamper
pdfStamper.close();

它也将关闭PdfReader。

干杯.....

答案 2 :(得分:1)

您可以将PdfStamperPdfCopy结合使用。

this回答中,解释了如何复制整个文档。如果您更改示例代码中的循环条件,则可以删除不需要的页面。

答案 3 :(得分:0)

这是一个准备好用于现实生活的删除功能。证明与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);
}

答案 4 :(得分:0)

对于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-reordering-pages 在这里:clone-splitting-pdf-file