使用 iTextSharp 检查 PDF 文档中的一段文本是否为粗体的方法有哪些

What are the ways of checking if piece of text in PDF documernt is bold using iTextSharp

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

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

当您查看您共享的 PDF 文件的内部结构时,字体 TT116t00 的子集 JOJJAH 看起来像这样:

我们看到字体是子类型 /TrueType,我们看到 /ItalicAngle 是 0,并且...我们看到 /Flags 的第 3 位已设置.让我们检查 PDF 参考以找出它告诉我们的内容:

我引用:

The font contains glyphs outside the Adobe standard Latin character set.

字形看起来很粗,因为字形的绘制方式使它们看起来很粗。你看到字体是粗体,因为你是人。然而,当机器查看字体时,它并不知道字体是粗体。机器只是遵循存储在 /FontFile2 流中的指令。

简而言之:iTextSharp 没有任何字体为粗体的迹象。