【问题标题】:What are the ways of checking if piece of text in PDF documernt is bold using iTextSharp使用 iTextSharp 检查 PDF 文档中的一段文本是否为粗体的方法有哪些
【发布时间】:2015-03-19 20:34:40
【问题描述】:

我有一个应用程序,可以从 pdf 文件中提取标题。应用程序应该使用的文档都具有或多或少连贯的结构和格式,事实上,判断文本块是否为粗体非常重要。最近我遇到了一堆文件,其中一些块在视觉上显得粗体,但在字体的字符串表示中没有“粗体”部分。以下 SO 线程 how can i get text formatting with iTextSharp 帮助我理解,还有另一种使文本显示为粗体的方法。但是,在我的情况下,调用 GetTextRenderMode() 也无济于事,因为它返回 0 就好像它是普通文本一样。那么有没有其他方法可以使文本显示为粗体,是否可以使用 iTextSharp 检测到它?

【问题讨论】:

  • 请分享有问题的 PDF 以供分析。还有其他方法可以使字形显示为粗体,例如用微小的偏移进行双重打印。
  • 单页,很好地了解了我所写的内容:dropbox.com/sh/thhbp3qy8hpybxe/AABJtS5UkXE32V_kBFu_uPQea?dl=0。有 2 个标题,显示为粗体,但字体名称如下“JOJJAH+TT116t00”,GetTextRenderMode() 对两者的所有部分都返回 0。

标签: pdf fonts itextsharp


【解决方案1】:

您假设 PDF 文件中的字体知道它是否为粗体。让我们来看看你的假设是否正确。

这是字体 TT116t00 的子集 JOJJAH 在查看您共享的 PDF 文件的内部时的样子:

我们看到字体是子类型/TrueType,我们看到/ItalicAngle 是0,并且......我们看到/Flags 的第3 位被设置。让我们检查一下 PDF 参考,看看它告诉我们什么:

我引用:

字体包含 Adob​​e 标准拉丁字符集之外的字形。

字形看起来很粗体,因为字形的绘制方式使它们看起来很粗体。你看到字体是粗体的,因为你是人类。但是,当机器查看字体时,它并不知道字体是否为粗体。机器只是按照/FontFile2 流中存储的指令进行操作。

简而言之:iTextSharp 没有任何迹象表明字体是粗体。

【讨论】:

  • 非常感谢!我完全错过了重点,这可能是非标准字形的问题,看起来已经很粗体了。至少现在我确信,没有简单的方法可以挑选出所有看起来像粗体的东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
  • 2020-10-30
  • 1970-01-01
  • 2019-10-08
相关资源
最近更新 更多