首页 文章

使用toUnicode获取PDF格式的文本

提问于
浏览
0

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

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

toUnicode表 .

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

    我解决了这个问题,问题出在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;
    

相关问题