Criar um índice a partir de um arquivo pdf

Estou usando quartzo para exibir conteúdo em pdf e preciso criar um índice para navegar pelo pdf. Ao ler a documentação da Apple, acho que devo usar o CGPDFDocumentGetCatalog, mas não consigo encontrar nenhum exemplo de como usá-lo em lugar algum. Alguma ideia?

Atualização: ainda não encontrou uma solução para isso. Eu cansei da solução do Alex, mas a saída que recebo é assim:

2011-07-27 09:16:19.359 LDS Scriptures App-iPad[624:707] key: Pages 2011-07-27 09:16:19.361 LDS Scriptures App-iPad[624:707] key: Count 2011-07-27 09:16:19.362 LDS Scriptures App-iPad[624:707] pdf integer value: 238 2011-07-27 09:16:19.363 LDS Scriptures App-iPad[624:707] key: Kids 2011-07-27 09:16:19.366 LDS Scriptures App-iPad[624:707] key: Type 2011-07-27 09:16:19.368 LDS Scriptures App-iPad[624:707] key: Outlines 2011-07-27 09:16:19.370 LDS Scriptures App-iPad[624:707] key: Count 2011-07-27 09:16:19.371 LDS Scriptures App-iPad[624:707] pdf integer value: 7 2011-07-27 09:16:19.372 LDS Scriptures App-iPad[624:707] key: First 2011-07-27 09:16:19.374 LDS Scriptures App-iPad[624:707] key: Parent 2011-07-27 09:16:19.375 LDS Scriptures App-iPad[624:707] key: Count 2011-07-27 09:16:19.376 LDS Scriptures App-iPad[624:707] pdf integer value: 7 

Ainda não sei como transformar isso em um índice utilizável. Idealmente eu gostaria de obter uma matriz de objects NSDictionary com um título e número de página correspondente.

Algo como isso pode ajudar você a começar:

 NSURL *documentURL = ...; // URL to file or http resource etc. CGPDFDocumentRef pdfDocument = CGPDFDocumentCreateWithURL((CFURLRef)documentURL); CGPDFDictionaryRef pdfDocDictionary = CGPDFDocumentGetCatalog(pdfDocument); // loop through dictionary... CGPDFDictionaryApplyFunction(pdfDocDictionary, ListDictionaryObjects, NULL); CGPDFDocumentRelease(pdfDocument); ... void ListDictionaryObjects (const char *key, CGPDFObjectRef object, void *info) { NSLog("key: %s", key); CGPDFObjectType type = CGPDFObjectGetType(object); switch (type) { case kCGPDFObjectTypeDictionary: { CGPDFDictionaryRef objectDictionary; if (CGPDFObjectGetValue(object, kCGPDFObjectTypeDictionary, &objectDictionary)) { CGPDFDictionaryApplyFunction(objectDictionary, ListDictionaryObjects, NULL); } } case kCGPDFObjectTypeInteger: { CGPDFInteger objectInteger; if (CGPDFObjectGetValue(object, kCGPDFObjectTypeInteger, &objectInteger)) { NSLog("pdf integer value: %ld", (long int)objectInteger); } } // test other object type cases here // cf. http://developer.apple.com/mac/library/documentation/GraphicsImaging/Reference/CGPDFObject/Reference/reference.html#//apple_ref/doc/uid/TP30001117-CH3g-SW1 } } 

Aqui está a minha abordagem.
1. Faça o download deste framework vfr reader
2. Use estas linhas de código para obter todos os capítulos de PDF

 NSString *path = [[NSBundle mainBundle] pathForResource:@"Reader" ofType:@"pdf"]; NSURL *targetURL = [NSURL fileURLWithPath:path]; NSArray *arr = [ReaderDocumentOutline outlineFromFileURL:targetURL password:@""]; 

Espero que isso ajude você.

Eu fiz isso com uma biblioteca freeware para iOS FastPdfKit