从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。
干杯…..
您可以将PdfStamper
与PdfCopy
结合使用。
在这个答案中,解释了如何复制整个文档。 如果更改示例代码中的循环条件,则可以删除不需要的页面。
这是一个准备好用于现实生活的删除function。 使用itext 2.1.7
certificate可以正常工作。 它也不使用“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