我一直在尝试以pdf格式突出显示文字。经过大量的研究和实验,似乎我必须找到每个字形的边界框,在实际绘图发生时创建一个叠加层,并通过在CGRect中填入边界框中的信息来突出显示文本并填充它颜色。现在,我被边界框困扰了。
我一直在使用PDFKitten
搜索并突出显示文字。现在我想用它来选择和突出显示文本。我不明白的是它如何使用边界框(以及其他信息,如上升,下降,capHeight等)来填充突出显示搜索到的单词。当我尝试访问FontDescriptor
类以获取信息时,它会显示:
2012-06-28 16:32:20.626 er[2408:15203] x:-665, y:-325, width:2000, height:1006
2012-06-28 16:32:20.627 er[2408:15203] x:-157, y:-250, width:1126, height:952
2012-06-28 16:32:20.628 er[2408:15203] x:-628, y:-376, width:2000, height:1010
这是非常令人困惑的,所以如果有人能澄清这一点,我们将非常感激。
答案 0 :(得分:1)
您不能使用字体描述符信息来获取字形的边界框。
PDFKitten负责使用RenderingState模型查找每个字形的宽度和高度。
您可以使用相同的方法在扫描PDF时查找单词的位置。
字体字典提供字形的宽度。您可以使用cid来获得正确的字形宽度。
尝试调查PDFKitten的突出显示代码。