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

时间:2014-02-06 18:01:17

标签: java itext

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

所以我有一个包含水印文本/图像的PDF文件。我想提取该文本或img并验证我无法做到的事情。

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

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

参考文献:

1 个答案:

答案 0 :(得分:2)

  

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

提取水印内容?

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

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

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

实际上还有另一种 特殊的水印,即所谓的水印注释。 由于这些注释很容易在文档合并或以其他方式操作时丢失,但它们几乎不会被使用。

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

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

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

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

验证水印内容!

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

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

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