从PDF中删除页面

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

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

“删除”页面的“更好”方式正在做

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

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

获取现有pdf文件的读者

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

现在更新阅读器

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

然后获取pdf压模对象,将更改写入文件中

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

关闭PdfStamper

 pdfStamper.close(); 

它也将关闭PdfReader。

干杯…..

您可以将PdfStamperPdfCopy结合使用。

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

这是一个准备好用于现实生活的删除function。 使用itext 2.1.7certificate可以正常工作。 它也不使用“strigly typing”。

 /** * 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 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); } 

对于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和here: clone-splitting-pdf-file