如何使用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>提取文本中引用的示例。
您只需检查这些类是否可以找到您期望的图像或文本,并按预期进行定位和设置样式。