【问题标题】:how to extract PDF watermark content using iText apis如何使用 iText apis 提取 PDF 水印内容
【发布时间】:2014-02-06 18:01:17
【问题描述】:

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

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

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

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

参考资料:

【问题讨论】:

  • 在这种情况下验证是什么意思?检查数字签名还是其他?
  • @LeonardBrünings:我的意思是,如果我有带有一些水印文本的现有 pdf [如上述参考中的第二个链接中所做的那样]。我想检查它是否有预期的文本。
  • 我不是专家,但您可以查看itext-general.2136553.n4.nabble.com/… 获取信息。但是,这不是一项简单的任务。

标签: java itext


【解决方案1】:

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

提取水印内容?

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

  • 在内容流中很早出现,而其他内容在流中较晚出现,因此被绘制在其上方;或者他们

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

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

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

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

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

因此,盲水印提取几乎是不可能的。

验证水印内容!

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

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

您只需要检查您所期望的图像或文本是否可以通过这些类按您期望的位置和样式找到。

【讨论】:

    猜你喜欢
    • 2012-11-03
    • 2022-08-04
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多