我有一个应用程序,它从pdf文件中提取标题。应用程序应该使用的文档都具有或多或少的连贯结构和格式,实际上,告诉文本块是否粗体,非常重要。最近我遇到了一堆文件,其中一些块在视觉上显示为粗体,但在字体的字符串表示中没有“粗体”块。以下SO线程how can i get text formatting with iTextSharp 帮助我理解,还有一种方法可以使文本显示为粗体。但是在我的情况下,调用GetTextRenderMode()也没有帮助,因为它返回0就好像它是普通文本一样。那么有没有其他方法可以使文本显示为粗体,是否可以使用iTextSharp检测它?
答案 0 :(得分:4)
您假设PDF文件中的字体知道它是否为粗体。我们来看看你的假设是否正确。
当您查看已共享的PDF文件的内部时,这就是字体TT116t00的子集JOJJAH的样子:
我们看到字体是subtye /TrueType
,我们看到/ItalicAngle
为0,并且......我们看到/Flags
的第3位已设置。让我们检查PDF参考,找出它告诉我们的内容:
我引用:
字体包含Adobe标准拉丁字符集之外的字形。
字形看起来很粗体,因为字形是以粗体显示的方式绘制的。你看到字体是粗体,因为你是人。但是,当机器查看字体时,它不知道字体是粗体。机器只是遵循/FontFile2
流中存储的指令。
简而言之:iTextSharp没有任何迹象表明字体是粗体。