从 PDF 中删除页面

发布于 2024-12-03 05:15:11 字数 97 浏览 0 评论 0原文

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

我已经用阅读器等打开了它,并且我想在将其保存回新文件之前删除页面;我怎样才能做到这一点?

I'm currently using iText and I'm wondering if there is a way to delete a page from a PDF file?

I have opened it up with a reader etc., and I want to remove a page before it is then saved back to a new file; how can I do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

失眠症患者 2024-12-10 05:15:11

“删除”页面的“更好”方法是,

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

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

The 'better' way to 'delete' pages is doing

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

Which means we only select pages 1-5, 10-12 effectively 'deleting' pages 6-9.

痴者 2024-12-10 05:15:11

获取现有 pdf 文件的阅读器

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

现在更新阅读器,

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

将更改写入文件

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

然后获取 pdf stamper 对象,通过关闭 PdfStamper

pdfStamper.close();

它也会关闭 PdfReader。

干杯.....

Get the reader of existing pdf file by

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

Now update the reader by

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

then get the pdf stamper object to write the changes into a file by

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

close the PdfStamper by

pdfStamper.close();

It will close the PdfReader too.

Cheers.....

并安 2024-12-10 05:15:11

对于 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-splitting-pdf-file

For iText 7 I found this example:

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

See also here: clone-reordering-pages
and here: clone-splitting-pdf-file

独孤求败 2024-12-10 05:15:11

您可以将 PdfStamperPdfCopy 结合使用。

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

You can use a PdfStamper in combination with PdfCopy.

In this answer it is explained how to copy a whole document. If you change the criteria for the loop in the sample code you can remove the pages you don't need.

蔚蓝源自深海 2024-12-10 05:15:11

这是一个可供现实生活使用的删除功能。事实证明可以与 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);
}

Here is a removing function ready for real life usage. Proven to work ok with itext 2.1.7. It does not use "strigly typing" also.

/**
 * 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);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文