0

これが私がしたことですが、それは無秩序に見えます。前もって感謝します。

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);
}
4

1 に答える 1