2012-01-06 68 views
1

我已经创建了一个PDF阅读器,现在我想要显示目录就像索引,我想从该表中获取所有页面是否有任何方式或方法来做到这一点?PDF阅读器中的目录

-Thanx任何提前

回答

0

虽然这是很老的文章,认为ü可能已经解决了这个问题,我米张贴这个答案,让其他人能有解决方案。

此功能不完整,但可以很好的开始。 :)

CGPDFDocumentGetCatalog功能可帮助您获得目录

CGPDFDictionaryRef oldDict = CGPDFDocumentGetCatalog(pdf); 
CGPDFDictionaryApplyFunction(oldDict, copyDictionaryValues, NULL); 


void copyDictionaryValues (const char *key, CGPDFObjectRef object, void *info) { 
    // NSLog(@"key: %s", key); 
CGPDFObjectType typeObj = CGPDFObjectGetType(object); 
switch (typeObj) { 
    case kCGPDFObjectTypeDictionary: { 
     CGPDFDictionaryRef objectDictionary; 
     if (CGPDFObjectGetValue(object, kCGPDFObjectTypeDictionary, &objectDictionary)) { 
      CGPDFDictionaryApplyFunction(objectDictionary, copyDictionaryValues, NULL); 
     } 
    } 
     break; 
    case kCGPDFObjectTypeString: { 
     CGPDFStringRef objectString; 
     if (CGPDFObjectGetValue(object, kCGPDFObjectTypeString, &objectString)) { 
      NSString *tempStr = (NSString *)CGPDFStringCopyTextString(objectString); 
      [auxInfo setObject:tempStr 
            forKey:[NSString stringWithCString:key encoding:NSUTF8StringEncoding]]; 
      [tempStr release]; 
     // NSLog(@"set string value"); 
     } 
    } 
     break; 
    case kCGPDFObjectTypeInteger: { 
     CGPDFInteger objectInteger; 
     if (CGPDFObjectGetValue(object, kCGPDFObjectTypeInteger, &objectInteger)) { 
      [auxInfo setObject:[NSNumber numberWithInt:objectInteger] 
            forKey:[NSString stringWithCString:key encoding:NSUTF8StringEncoding]]; 
     //  NSLog(@"set int value"); 
     } 
    } 
     break; 
    case kCGPDFObjectTypeBoolean: { 
     CGPDFBoolean objectBool; 
     if (CGPDFObjectGetValue(object, kCGPDFObjectTypeBoolean, &objectBool)) { 
      [auxInfo setObject:[NSNumber numberWithBool:objectBool] 
            forKey:[NSString stringWithCString:key encoding:NSUTF8StringEncoding]]; 
     //  NSLog(@"set boolean value"); 
     } 
    } 
     break; 
    case kCGPDFObjectTypeArray : { 
     CGPDFArrayRef objectArray; 
     if (CGPDFObjectGetValue(object, kCGPDFObjectTypeArray, &objectArray)) { 
     // copyPDFArray(objectArray); 

      NSLog(@"set array value"); 
     } 
    } 

} 
}