J'essaie de prendre une image que j'ai dans un objet image et de le rendre dans un contexte Core Graphics PDF - se trouve sur un iPhone mais cette question s'applique sûrement également au bureau Quartz. Cette UIImage est une simple image couleur sur blanc à une résolution d'environ 600x800. Si je (dis) le transforme en un fichier PNG, ce fichier ressemble exactement à ce que l'on attend - donc les données sont OK.Le rendu de UIImage/CGImage dans CGPDFContext aboutit à ... blankness!
Voici ce que je fais pour générer le PDF:
NSMutableData * outputData = [[NSMutableData alloc] init];
CGDataConsumerRef dataConsumer = CGDataConsumerCreateWithCFData((CFMutableDataRef)outputData);
CFMutableDictionaryRef attrDictionary = NULL;
attrDictionary = CFDictionaryCreateMutable(NULL, 0,
&kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);
CFDictionarySetValue(attrDictionary, kCGPDFContextTitle, @"My Awesome Document");
CGContextRef pdfContext = CGPDFContextCreate(dataConsumer, NULL, attrDictionary);
CFRelease(dataConsumer);
CFRelease(attrDictionary);
CGImageRef pageImage = [myUIImage CGImage];
CGPDFContextBeginPage(pdfContext, NULL);
CGContextDrawImage(pdfContext, CGRectMake(0, 0, [myUIImage size].width, [myUIImage size].height), pageImage);
CGPDFContextEndPage(pdfContext);
CGPDFContextClose(pdfContext);
CGContextRelease(pdfContext);
Le PDF résultant, qui se termine en outputData
, semble comme un fichier PDF valide (ouvre correctement, le titre du document est présent dans les métadonnées), mais il consiste précisément en une page blanche.
Qu'est-ce que je fais mal?
Merci.
MISE À JOUR: Ha! C'était ma faute. Mon code de test pour simplement générer le fichier PNG est passé par un chemin différent pour obtenir les données. Le chemin PDF recevait en effet une image vide.
-vous créer dynamiquement myUIImage ou est une ressource d'image chargée? Si vous dessinez l'image avec du code, pouvez-vous fournir la source? –