2010-04-07 4 views

Répondre

3

Essayez ceci:

CGPDFDictionaryRef catalog = CGPDFDocumentGetCatalog(myDocument); 
CGPDFDictionaryApplyFunction(catalog, streamInfoFunction, catalog); 

Le catalogue est essentiellement un dictionnaire et vous avez vous utilisez une fonction comme sur l'applicateur indiqué.

void streamInfoFunction (const char *key,CGPDFObjectRef object, void *info) 
{ 
NSLog(@"---------------------------------------------------------------------------------------------"); 
NSLog(@"Processing Stream Info"); 

NSString *keyStr = [NSString stringWithCString:key encoding:NSUTF8StringEncoding]; 
CGPDFDictionaryRef contentDict = (CGPDFDictionaryRef)info; 

CGPDFObjectType objectType = CGPDFObjectGetType(object); 
if(objectType == kCGPDFObjectTypeDictionary) 
{ 
    CGPDFDictionaryRef value = NULL; 
    CGPDFDictionaryGetDictionary(contentDict, key, &value); 
    NSLog(@"Value for key %@ is %d",keyStr,CGPDFDictionaryGetCount(value)); 
     //S.SNSLog(@"%@",value); 
} 
else if(objectType == kCGPDFObjectTypeArray) 
{ 
    CGPDFArrayRef value = NULL; 
    CGPDFDictionaryGetArray(contentDict, key, &value); 
    NSLog(@"Value for key %@ is %d",keyStr,CGPDFArrayGetCount(value)); 
     //S.SNSLog(@"%@",value); 
} 
else if(objectType == kCGPDFObjectTypeStream) 
{ 
    CGPDFStreamRef value = NULL; 
    CGPDFDictionaryGetStream(contentDict, key, &value); 
    NSLog(@"Processing for key %@",keyStr); 
    CGPDFDataFormat dataFormat; 
    CFDataRef streamData = CGPDFStreamCopyData(value, &dataFormat); 
    CFShow(streamData); 
    NSString *contentString = [[NSString alloc]initWithBytes:[(NSData*)streamData bytes] length:[(NSData*)streamData length] encoding:NSUTF8StringEncoding]; 
    NSLog(@"%@",contentString); 

} 
else if(objectType == kCGPDFObjectTypeInteger) 
{ 
    CGPDFInteger integerValue; 
    CGPDFDictionaryGetInteger(contentDict, key, &integerValue); 
    NSLog(@"Processing for Key %@ value %d",keyStr,integerValue); 

} 
else if(objectType == kCGPDFObjectTypeName) 
{ 
    const char *name; 
    CGPDFDictionaryGetName(contentDict, key, &name); 
    NSLog(@"Processing for key %@ value %s",keyStr,[NSString stringWithCString:name encoding:NSUTF8StringEncoding]); 
} 

NSLog(@"---------------------------------------------------------------------------------------------"); 

} 

Pour une référence générale, voir: Fast and Lean PDF Viewer for iPhone/iPad/iOs - tips and hints?

Questions connexes