如何使用iText apis提取PDF水印内容

我正在浏览itext api文档并且我能够创建带有水印图像或文本的pdf,但是没有找到从pdf获取/提取水印内容的方法。

所以我有一个包含水印文本/图像的pdf文档,我想提取该文本或img并validation我无法做到的。

如何使用iText apis提取水印内容? 或者还有其他方法来validation水印内容吗?

通过validation我的意思是,如果我有一个带有水印文本的现有pdf /图像[如上面参考中的第二个链接所做的那样],我想检查它是否具有预期的文本/图像。

参考文献:

  • http://itextpdf.com/themes/keyword.php?id=226
  • http://www.java-connect.com/itext/add-watermark-in-PDF-document-using-java-iText-library.html

如何使用iText apis提取水印内容? 或者还有其他方法来validation水印内容吗?

提取水印内容?

与常规页面内容相比,PDF中的水印没有什么特别之处。 他们只是

  • 因此,在内容流中很早就出现在流中的其他内容,因此,它在它上面绘制; 或者他们

  • 在内容流中出现得相当晚,但是应用了某种透明度。

实际上还有另一种特殊的水印, 所谓的水印注释。 但是,当文档被合并或以其他方式操纵时,这些注释很容易丢失,但它们几乎从未使用过。

此外,提供添加水印的方式的不同PDF生成软件套件以其各自的方式这样做。 因此,您甚至无法通过某些特定操作以某种特定的独特模式识别水印。

您提到的iText示例已经应用了不同类型的水印

  • MovieCountries2只是使用有角度的基线绘制一些灰色的大文本。
  • StampStationery将一些完整的页面从一些PDF(它本身可以在视觉上具有前景和背景材料)复制到目标PDF内的单独对象中,并在目标的每个页面的开头添加对该对象的引用。
  • InsertPages类似地在每个新生成的目标文档页面上引用来自某些PDF的页面。

因此,盲水印提取实际上是不可能的。

validation水印内容!

但是,如果您知道要搜索的内容,可以尝试一些validation。 您只是不仅搜索一些(在PDF中不存在)固定水印流,而是搜索整个页面内容。

iText提供parser包的类,允许从内容流中提取文本和/或位图图像。 查看从关键字PARSING PDF>提取图像和PARSING PDF>提取文本中引用的示例。

您只需检查这些类是否可以找到您期望的图像或文本,并按预期进行定位和设置样式。