2012-01-06 6 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"); 
     } 
    } 

} 
} 
Смежные вопросы