我正在运行以下内容:
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字典)。”如何计算零并满足它包含该字典的要求?
答案 0 :(得分:1)
在代码的这一部分中查看anArray:
CGPDFArrayRef anArray = NULL;
CGPDFObjectGetValue(object, kCGPDFObjectTypeArray, NULL);
NSLog(@"%i", CGPDFArrayGetCount(anArray));
它永远不会设置为NULL以外的任何东西。你可能打算这样做:
CGPDFObjectGetValue(object, kCGPDFObjectTypeArray, &anArray);