2011-10-18 113 views
3

如何將CGPDFStringRef轉換爲unicode char?我已經使用CGPDFStringCopyTextString獲取字符串,然後[string characterAtIndex:i]投射到unichar,這是正確的方式嗎?或者有什麼辦法獲得字符串的字節並直接轉換爲unicode? 這裏需要一些指導。轉換或打印CGPDFStringRef字符串

回答

2

的NSString能夠Unicode字符本身處理,你只需要在CGPDFString轉換成的NSString,進而你可以按如下方式使用它:

NSString *tempStr = (NSString *)CGPDFStringCopyTextString(objectString); 
+0

can CGPDFStringCopyTextString(objectString);產生準確的字符串(沒有丟失字節)?並且你知道CGPDFStringCopyTextString()使用的編碼是什麼? – Lunayo

+0

它不應該丟失任何字節,就像我爲西班牙語雜誌閱讀器實現的方式一樣,它仍然工作正常。所以我相信它不會留下任何字節。 – UPT

+0

到目前爲止,您是否曾經從pdf解析文本(抓取文本)?導致我不斷收到未提供給Unicode代碼表的字符代碼點。 – Lunayo

0

即使您可以直接使用CGPDFStringGetBytePtr來訪問CGPDFString,這並不是一個壞主意。您還需要CGPDFStringGetLength來獲取字符串長度,因爲它可能不以null結尾。

documentation for more info

+0

,因爲我認爲使用CGPDFStringCopyTextString一些字節會丟失?因爲我使用它來獲取PDF字符串,並且結果顯示某些字符不同(無法在toUnicode表中找到匹配的字形)。如果使用CGPDFStringGetBytePtr如何轉換爲unicode? – Lunayo

+1

CGPDFStringGetBytePtr返回原始內部數據 – Geoffroy

1

雖然UPT的答案正確,它會產生內存泄漏

從文檔: CGPDFStringCopyTextString 「...您負責釋放此對象。」

要做到這一點是正確的做法:

CFStringRef _res = CGPDFStringCopyTextString(pdfString); 
NSString *result = [NSString stringWithString:(__bridge NSString *)_res]; 
CFRelease(_res);