是否可以使用iText删除pdf文档指定区域(红色矩形区域)中包含的所有文本出现?
请看一下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的版本。
效果很好,但问题是我们仍然可以选择灰色后面的文本。问题是要从pdf文件中删除文本。