0

我正在运行以下内容:

if (CGPDFDictionaryGetObject(dict, "DescendantFonts", &object))
  {
    CGPDFObjectType objectType = CGPDFObjectGetType(object);
    switch (objectType)
    {
      case kCGPDFObjectTypeArray:
      {
        CGPDFArrayRef anArray = NULL;
        CGPDFObjectGetValue(object, kCGPDFObjectTypeArray, NULL);
        NSLog(@"%i", CGPDFArrayGetCount(anArray));
      }
        break;
      default:
        break;
    }
  }

从 PDF 页面字体字典中提取信息,当我有一个 truetype 字体时它会找到一些东西。

PDF 指南中的一个示例是:

14 0 obj 
<<
/Type /Font
/Subtype /Type0
/BaseFont /HeiseiMin−W5−90ms−RKSJ−H
/Encoding /90ms−RKSJ−H
/DescendantFonts [15 0 R]
>>
endobj

但是,数组的计数始终为零![它应该是“一个元素数组。”]这怎么可能?- PDF 指南还规定此数组是必需的,并且“指定作为该 Type 0 字体后代的 CIDFont 字典”。它如何才能计数为零并满足它包含该字典的要求?

4

1 回答 1

1

在这部分代码中查看 anArray :

CGPDFArrayRef anArray = NULL;
CGPDFObjectGetValue(object, kCGPDFObjectTypeArray, NULL);
NSLog(@"%i", CGPDFArrayGetCount(anArray));

它永远不会设置为 NULL 以外的任何值。您可能希望它是:

CGPDFObjectGetValue(object, kCGPDFObjectTypeArray, &anArray);
于 2011-05-18T14:20:32.040 回答