使用 iText 删除指定区域中出现的文本

Remove text occurrences contained in a specified area with iText

是否可以使用 iText 删除 pdf 文档的指定区域(红色矩形区域)中包含的所有文本?

请查看 RemoveContentInRectangle 示例。

假设我们有以下页面:

现在我们要删除坐标定义的矩形中的所有文本:llx = 97, lly = 405, urx = 480, ury = 445](其中ll代表lower-left,ur代表upper-right).

我们现在可以使用下面的代码:

public void manipulatePdf(String src, String dest) throws IOException, DocumentException {
    PdfReader reader = new PdfReader(src);
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
    List<PdfCleanUpLocation> cleanUpLocations = new ArrayList<PdfCleanUpLocation>();
    cleanUpLocations.add(new PdfCleanUpLocation(1, new Rectangle(97f, 405f, 480f, 445f), BaseColor.GRAY));
    PdfCleanUpProcessor cleaner = new PdfCleanUpProcessor(cleanUpLocations, stamper);
    cleaner.cleanUp();
    stamper.close();
    reader.close();
}

如您所见,我们定义了一个包含 PdfCleanUpLocation 个对象的列表。在这个列表中,我们添加了一个 PdfCleanUpLocation 来传递页码,一个 Rectangle 定义了我们要清理的区域,以及一个颜色来显示内容已被删除的区域。

然后我们将 PdfCleanUpLocation 的列表与 PdfStamper 实例一起传递给 PdfCleanUpProcessor。我们调用 cleanUp() 方法,当我们关闭 PdfStamper 实例时,我们得到以下结果:

您可以检查此文件:您将无法再select 灰色区域中的任何文本。该矩形内的所有文本已被删除。

请注意,只有将 itext-xtra.jar 添加到 CLASSPATH(itext-xtra 随 iText 核心一起提供),此代码示例才会起作用。它只适用于等于或高于 iText 5.5.4 的版本。