使用toUnicode获取PDF格式的文本

时间:2011-10-14 10:15:08

标签: iphone parsing pdf unicode

我在PDF项目中工作,我需要从PDF中获取所有文本。我使用toxnicode字典表从PDF本身提供解码Identity-H字体时遇到了一些问题。 toUnicode提供字符映射到unicode十六进制,但没有为unicode(在表中)提供大写的CID字符。 那么有没有办法可以在使用表格进程映射到unicode之前将输入unichar小写?

我可以使用< 000C>之间的偏移吗? < 0042>计算大写字符?

toUnicode table。

57 beginbfchar
<0001> <0020>
<0002> <0021>
<0003> <0026>
<0004> <2019>
<0005> <002C>
<0006> <002D>
<0007> <002E>
<0008> <003A>
<0009> <003F>
<000A> <0040>
<000B> <0041>
<000C> <0042>
<000D> <0043>
<000E> <0044>
<000F> <0045>
<0010> <0046>
<0011> <0047>
<0012> <0048>
<0013> <0049>
<0014> <004A>
<0015> <004B>
<0016> <004C>
<0017> <004D>
<0018> <004F>
<0019> <0050>
<001A> <0052>
<001B> <0053>
<001C> <0054>
<001D> <0055>
<001E> <0057>
<001F> <0059>
<0020> <2018>
<0021> <0061>
<0022> <0062>
<0023> <0063>
<0024> <0064>
<0025> <0065>
<0026> <0066>
<0027> <0067>
<0028> <0068>
<0029> <0069>
<002A> <006A>
<002B> <006B>
<002C> <006C>
<002D> <006D>
<002E> <006E>
<002F> <006F>
<0030> <0070>
<0031> <0072>
<0032> <0073>
<0033> <0074>
<0034> <0075>
<0035> <0077>
<0036> <0079>
<0037> <007A>
<0038> <FB01>
<0039> <00FC>
endbfchar

表没有提供映射到大写字符的字形。那么如何展示角色呢?

1 个答案:

答案 0 :(得分:1)

我解决了问题,问题出在CGPDFStringCopyTextString()中。这个方法从CGPDFStringRef获取字符串得到了一些我不想要的奇怪字节。因此,我尝试使用

来获取字节手册
NSMutableString *unicodeString = [NSMutableString string];
    for (NSUInteger i = 0; i < [data length]; i++) {
        unsigned char byte;
        [data getBytes:&byte range:NSMakeRange(i, 1)];
        unichar unicodeChar = byte;
        [unicodeString appendFormat:@"%c",unicodeChar];
    }
return unicodeString;