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

时间:2015-01-21 10:48:21

标签: pdf fonts itextsharp

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

1 个答案:

答案 0 :(得分:4)

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

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

Internal view showing how a font is stored inside a PDF

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

PDF Reference 1.7 section 5.7.1

我引用:

  

字体包含Adobe标准拉丁字符集之外的字形。

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

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