我目前正在使用iText,我想知道是否有办法从PDF文件中删除页面?
我已经用读卡器等打开了它,我想删除一个页面,然后将其保存回新文件;我怎么能这样做?
答案 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"));
通过
关闭PdfStamperpdfStamper.close();
它也将关闭PdfReader。
干杯.....
答案 2 :(得分:1)
您可以将PdfStamper
与PdfCopy
结合使用。
在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();