我正在浏览itext api docs&我能够创建带有水印图像或文本的pdf,但没有找到从pdf获取/提取水印内容的方法。
所以我有一个包含水印文本/图像的PDF文件。我想提取该文本或img并验证我无法做到的事情。
如何使用iText apis提取水印内容?或者还有其他方法来验证水印内容吗?
通过验证我的意思是,如果我有一个带有水印文本的现有pdf /图像[如上面参考中的第二个链接所做的那样],我想检查它是否有预期的文本/图像。
参考文献:
答案 0 :(得分:2)
如何使用iText apis提取水印内容?或者还有其他方法来验证水印内容吗?
与常规页面内容相比,PDF中的水印没有什么特别之处。他们只是
在内容流中很早就出现了,因此,流中的其他内容会在它上面出现;或者他们
在内容流中显得相当晚,但已应用了某种透明度。
实际上还有另一种 特殊的水印,即所谓的水印注释。 由于这些注释很容易在文档合并或以其他方式操作时丢失,但它们几乎不会被使用。
此外,提供添加水印的方法的不同PDF生成软件套件以各自的方式进行。因此,您甚至无法通过某些特定操作以某种特定的独特模式识别水印。
您提到的iText示例已经应用了不同类型的水印
MovieCountries2
只是使用有角度的基线绘制一些灰色的大文本。StampStationery
将完整页面从某些PDF(其本身可能在视觉上具有前景和背景材质)复制到目标PDF内的单独对象中,并在目标的每个页面的开头添加对此对象的引用InsertPages
同样在每个新生成的目标文档页面上引用某些PDF页面。因此,盲目水印提取实际上是不可能的。
但是,如果您知道要搜索的内容,可以尝试一些验证。您只是不仅搜索一些(在PDF中不存在)固定水印流,而是搜索整个页面内容。
iText提供parser
包的类,允许从内容流中提取文本和/或位图图像。查看关键字PARSING PDF > EXTRACTING IMAGES和PARSING PDF > EXTRACTING TEXT引用的示例。
您只需检查这些类是否可以找到您期望的图像或文本,并按预期进行定位和设置样式。