【发布时间】:2013-02-06 13:04:33
【问题描述】:
这是我所做的,但它看起来很混乱。提前致谢。
1.使用CGPDFStringCopyTextString从pdf中获取文本
2.将NSString编码为char*
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
const char *char_content = [self.currentData cStringUsingEncoding:enc];
以下是我获取 currentData 的方法:
void arrayCallback(CGPDFScannerRef inScanner, void *userInfo)
{
BIDViewController *pp = (__bridge BIDViewController*)userInfo;
CGPDFArrayRef array;
bool success = CGPDFScannerPopArray(inScanner, &array);
for(size_t n = 0; n < CGPDFArrayGetCount(array); n += 1)
{
if(n >= CGPDFArrayGetCount(array))
continue;
CGPDFStringRef string;
success = CGPDFArrayGetString(array, n, &string);
if(success)
{
NSString *data = (__bridge NSString *)CGPDFStringCopyTextString(string);
[pp.currentData appendFormat:@"%@", data];
}
}
}
- (IBAction)press:(id)sender {
table = CGPDFOperatorTableCreate();
CGPDFOperatorTableSetCallback(table, "TJ", arrayCallback);
CGPDFOperatorTableSetCallback(table, "Tj", stringCallback);
self.currentData = [NSMutableString string];
CGPDFContentStreamRef contentStream = CGPDFContentStreamCreateWithPage(pagerf);
CGPDFScannerRef scanner = CGPDFScannerCreate(contentStream, table, (__bridge void *)(self));
bool ret = CGPDFScannerScan(scanner);
}
【问题讨论】:
-
你说的无序是什么意思?您是否检查过
CGPDFStringCopyTextString的输出是否确实是GB_18030_2000 编码的? -
我的意思是因为不同的编码器或其他原因,字符变为无法识别。以及如何获取CGPDFStringCopyTextString的编码类型?Thx
-
我想用 GB_18030_2000 对 CGPDFStringCopyTextString 进行编码,它应该能正确显示中文,但它不起作用....
-
在您使用 GB_18030_2000 编码之前,问题可能已经存在,参见。我的回答如下。
标签: ios pdf localization