tags:

views:

105

answers:

1

I have implemented pdf reader for iphone.I have got the table of content using objective c. But i want to get page number from the table of content.

How it possible please help me.

I have used below code for table of content.

- (OutlineItem*)recursiveUpdateOutlines: (CGPDFDictionaryRef) outlineDic parent:(OutlineItem*) parentItem level:(NSUInteger) level;
{



// update outline count
outlineCount++;
OutlineItem* item = [[OutlineItem alloc] init];
// Level
item.level = level;
// Title
CGPDFStringRef title;
if(CGPDFDictionaryGetString(outlineDic, "Title", &title)) {
    const char* pchTitle = CGPDFStringGetBytePtr(title);
    item.title = [NSString stringWithUTF8String:pchTitle];
    // DEBUG
    //NSLog(item.title);
}
if (parentItem != nil) {
    // Add to parent
    [parentItem.children addObject:item];
    // Next
    CGPDFDictionaryRef nextDic;
    if (CGPDFDictionaryGetDictionary(outlineDic, "Next", &nextDic)) {
        [self recursiveUpdateOutlines:nextDic parent:parentItem level: level];
    }
}
// First child
CGPDFDictionaryRef firstDic;
if (CGPDFDictionaryGetDictionary(outlineDic, "First", &firstDic)) {
    [self recursiveUpdateOutlines:firstDic parent:item level: level + 1];
}
// Dest
CGPDFStringRef destString;

if(CGPDFDictionaryGetString(outlineDic, "Dest", &destString)) {
    const char* pchDest = CGPDFStringGetBytePtr(destString);

//      CGPDFPageRef page = CGPDFDocumentGetPage(outlineDic, pageNumber);




    CGPDFDictionaryRef destDic;
    if(CGPDFDictionaryGetDictionary(dests, pchDest, &destDic)) {
        NSLog(@"");
    }
    CGPDFArrayRef destArray;
    if (CGPDFDictionaryGetArray(dests, pchDest, &destArray)) {
        NSLog(@"");
    }
} else {
    CGPDFDictionaryRef ADic;
    if (CGPDFDictionaryGetDictionary(outlineDic, "A", &ADic)) {
        const char* pchS;
        if (CGPDFDictionaryGetName(ADic, "S", &pchS)) {
            CGPDFArrayRef destArray;
            if (CGPDFDictionaryGetArray(ADic, "D", &destArray)) {
                int count = CGPDFArrayGetCount(destArray);
                switch (count) {
                    case 5:
                    {
                        // dest page
                        CGPDFDictionaryRef destPageDic;
                        if (CGPDFArrayGetDictionary(destArray, 0, &destPageDic)) {
                            int pageNumber = [self.pages indexOfObjectIdenticalTo:destPageDic];
                            item.page = pageNumber;
                        }
                        // x
                        CGPDFInteger x;
                        if (CGPDFArrayGetInteger(destArray, 2, &x)) {
                            item.x = x;
                        }
                        // y
                        CGPDFInteger y;
                        if (CGPDFArrayGetInteger(destArray, 3, &y)) {
                            item.y = y;
                        }
                        // z
                    }
                        break;
                    default:
                        NSLog(@"");
                        break;
                }
            }
        }
    }
}


return item;
}