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

问题描述 投票:1回答:2

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

“在此处输入图像描述”

java itext
2个回答
4
投票

请看一下RemoveContentInRectangle示例。

假设我们有以下页面:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9VMFlzSi5qcGcifQ==” alt =“在此处输入图像描述”>

现在我们要删除由坐标定义的矩形中的所有文本:llx = 97, lly = 405, urx = 480, ury = 445](其中ll代表左下角,ur代表右上角)。

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

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的列表与PdfCleanUpProcessor实例一起传递给PdfStamper。我们调用cleanUp()方法,当我们关闭PdfStamper实例时,将得到以下结果:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9Hcjl4by5qcGcifQ==” alt =“在此处输入图像描述”>

您可以检查此文件:您将不再能够在灰色区域中选择任何文本。该矩形内的所有文本均已删除。

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


0
投票

效果很好,但问题是我们仍然可以选择灰色后面的文本。问题是要从pdf文件中删除文本。

© www.soinside.com 2019 - 2024. All rights reserved.