gpt4 book ai didi

java - 我可以使用 iText 从 PDF 中删除单个页面的功能

转载 作者:行者123 更新时间:2023-12-01 23:03:40 26 4
gpt4 key购买 nike

类似:How can I remove blank page from PDF in iText

我正在尝试创建一个通用函数,可以使用 iText 5.5.x 从 PDF 中删除页面。

我写了一个函数,它通常工作正常。但我收到了用户的投诉,称该功能有时会完全破坏 PDF。

你知道我的代码有什么问题导致它不稳定吗?

public static void removePageFromPDF(File thePDFFile, int pageIndexNotZeroBased) throws InterruptedException, Exception {       
PdfReader reader = new PdfReader(thePDFFile.getAbsolutePath());
File tmpNewFile = File.createTempFile("pdfRemoveFile", "pdfouttemp.pdf");
FileOutputStream fos = new FileOutputStream(tmpNewFile);
com.itextpdf.text.Document d = new com.itextpdf.text.Document();
PdfCopy copy = new PdfCopy(d, fos);
d.open();
for (int i = 1; i <= reader.getNumberOfPages(); ++i) {
if (i != pageIndexNotZeroBased) {
copy.addPage(copy.getImportedPage(reader, i));
}
}
copy.freeReader(reader);
reader.close();
d.close();
fos.close();
FileUtils.copyFile(tmpNewFile, thePDFFile);
tmpNewFile.delete();
}

最佳答案

请阅读chapter 6我的书。您将看到有两种选择页面的方法,一种使用 PdfCopy,一种使用 PdfStamper。使用 PdfStamper 的方法比您现有的方法简单得多,而且也更可靠:

PdfReader reader = new PdfReader(src);
reader.selectPages("!2");
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
stamper.close();

关于java - 我可以使用 iText 从 PDF 中删除单个页面的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23117119/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com