我正在编写一个pdf阅读器iPhone应用程序。
我知道如何在iOS中使用CGPDF **类在视图中显示pdf文件。
我现在要做的是搜索pdf文件中的文本,并突出显示搜索到的文本。 所以,我需要一个可以检测文本在什么位置的库。 此外,我希望图书馆能够处理unicode和汉字。
我搜索了几天但仍然找不到合适的东西。
我尝试过xpdf,但它是用c ++编写的。我不知道如何在iPhone应用程序中使用c ++代码。
我也试过了 http://www.codeproject.com/KB/cpp/ExtractPDFText.aspx 但它不处理汉字。
我试过自己编码, 但PDF中的编码非常复杂。
例如,当我想通过以下字体解码文本时,我不知道该引用什么:
8 0 obj
<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /RNXJTV+PMingLiU
/DescendantFonts [ 157 0 R ] >>
endobj
157 0 obj
<< /Type /Font /Subtype /CIDFontType2 /BaseFont /RNXJTV+PMingLiU /CIDSystemInfo
<< /Registry (Adobe) /Ordering (CNS1) /Supplement 0 >> /FontDescriptor 158 0 R
/W 161 0 R /DW 1000 /CIDToGIDMap 162 0 R >>
endobj
158 0 obj
<< /Type /FontDescriptor /Ascent 801 /CapHeight 711 /Descent -199 /Flags 32
/FontBBox [0 -199 999 801] /FontName /RNXJTV+PMingLiU /ItalicAngle 0 /StemV
0 /Leading 199 /MaxWidth 1000 /XHeight 533 /FontFile2 159 0 R >>
endobj
答案 0 :(得分:4)
看一下CGPDFScanner
类型;它可用于解析字符串和特定PDF运算符的PDF文档。
答案 1 :(得分:3)
此代码存在一些可以轻松修复的错误。很好地呈现了Objective C代码。
答案 2 :(得分:0)
CGPDFScanner只能扫描pdf内容,但是你无法在pdf中找到该单词的位置。因此使用cgpdf函数无法突出显示。扫描仪输出也是flateDecoded和其他类型pdf的编码文本。 它只能扫描简单的pdf,即线性pdf。 (打开pdf作为文本文件,在顶部你会找到单词Linearized pdf。) 可能的解决方案是使用c或c +解析库(如果有的话)。 此外,代码项目中的cpp项目只会解析内容,但不会提供任何位置信息。 自己编写pdf解析器很复杂,因为pdf格式很复杂而且没有修复。 Pdf内容可以用不同的方式编码,如FlateDecode类型等。