【问题标题】:Can iText recognize invisible text in PDF?iText 可以识别 PDF 中的不可见文本吗?
【发布时间】:2014-12-26 23:04:19
【问题描述】:

我正在使用 iText 解析 PDF 文件中的文本。我发现返回了一些文本但不可见。 例如,我得到了

  • 金融衍生品”,页面上确实存在
  • 金融衍生品”可见,但仍由 iText 返回。此外,Adobe acrobat 或 Foxit 无法选择它们。

iText 有区分可见/不可见文本的方法吗?还是 PDF 格式有与此相关的规范?

【问题讨论】:

  • 如何使特定文本“不可见”?上面有东西吗?很小?没有颜色,还是和背景一样?离开页面?以不包含轮廓的字体呈现?以将所有内容映射到空格字符的字体呈现?

标签: pdf itextsharp itext pdfbox acrobat


【解决方案1】:

由于您不提供代码,因此很难建议实际代码...但是,使文本不可见的习惯方法是使用文本呈现模式。 PDF 中的所有文本都具有这样的文本渲染模式,它确定文本是否呈现为填充文本(正常)、描边文本、填充和描边......其中一种可能性是“不可见”,它确保文本不是没有显示出来。

当解析页面上的文本时,iText 允许您过滤返回的文本 - 例如,请参阅 FilteredRenderListener。在过滤期间,您可以确定您是否对文本感兴趣。您可以使用 TextRenderInfo 对象检查有关文本的大量信息。该对象有一个名为“getTextRenderMode”的方法,它将返回上述文本渲染模式。如果该调用返回“3”,您就知道文本是不可见的。

现在,如果您想确定该文本是否确实以不可见的方式呈现(而不是使用@jongware 在他的评论中建议的其他讨厌的技巧之一,您必须检查 PDF 或与我们分享一个示例让我们看看。

【讨论】:

  • 有趣——这种特殊的渲染模式是转换成this "no stroke, no fill"还是它实际上是PDF规范的一部分? (在这种情况下,我很乐意将它添加到我的包中!)
  • 其中一种可能性是“不可见”,确保不显示文本) - 这种特殊的渲染模式是否会转化为这种“无笔画,没有填充”或者它实际上是 PDF 规范的一部分 - ISO 32000-1 的表 106 将呈现模式 3 描述为 既不填充也不描边文本(不可见),所以 不stroke, no fillinvisible 确实应该重合。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多