2012-03-29 6 views
0

Ich erzeuge ein PDF-Dokument im laufenden Betrieb mit Daten, die von meinem Core Data Graphen ausgegeben wurde, aber das erweist sich als ziemlich schwierig.Drawing UIImage mit CGRect in einem PDF aus Core Data

Ich bin mit dem Assetlibrary den Dateipfad des Bildes, um aus den Graphen Kerndaten mithilfe des folgenden:

NSURL *url = [[NSURL alloc] initWithString:bird.photo]; 
     ALAssetsLibrary* library = [[ALAssetsLibrary alloc] init]; 

     [library assetForURL:url resultBlock:^(ALAsset *asset) { 

        _pdfBirdmage = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullResolutionImage]]; 


       } failureBlock:^(NSError *error) { 

        NSLog(@"Couldn't load asset %@ => %@", error, [error localizedDescription]); 

       }]; 

Und dies zeigt, dass das Bild wie folgt lautet:

birdphotoview = <UIImage: 0x1caac0> 

Offensichtlich würde ich die gerne in einem Bildformat, wie PNG oder JPG sein, um es in das PDF-Dokument zu schreiben, mit dem folgenden Code:

[_pdfBirdImage drawInRect:CGRectMake((pageSize.width - _pdfBirdImage.size.width/2)/2, 350, _pdfBirdImage.size.width/2, _pdfBirdImage.size.height/2)]; 

Dies ist jedoch nichts auf der PDF-Datei gedruckt.

Jede Hilfe wäre brillant.

+0

Ist das Bild korrekt? Haben Sie versucht, es in einer Bildansicht anzuzeigen? Auch ist Ihr pdf Zeichnungskontext richtig? – cocoakomali

+0

Ja, ja und ja..auf eine ernstere Anmerkung, ich denke, die UIImage muss ein .png Bild sein. Im Grunde muss ich meins in ein .png – jcrowson

+0

umwandeln, um die Umwandlung durchzuführen, UIImagePNGRepresentation (UIImage * Bild) Funktion verwenden, die ein NSData Objekt zurückbringt. Schreiben Sie es in eine Datei und verwenden Sie das Bild. – cocoakomali

Antwort

0

Verwenden Sie die CGPDF-basierten Routinen? Ich denke, dass die Y-Dimension in diesem Fall entgegengesetzt ist. Ich habe PDFs zuvor angezeigt und überlagert Daten (und anschließend den gesamten Bildschirm wieder auf die Festplatte, sondern als ein Bild gerendert). Wenn das der Fall ist, musste ich zuerst das vorhandene PDF umwandeln. Klingt nicht nach Ihrem Problem, aber ich sehe keinen PDF-Code, auf den hier verwiesen wird, so schwer zu sagen. Egal, war etwas entlang:

UIGraphicsBeginImageContext(pdfPageRectScaled.size); 
CGContextRef context = UIGraphicsGetCurrentContext(); 

// First fill the background with white. 
CGContextSetRGBFillColor(context, 1.0f, 1.0f, 1.0f, 1.0f); 
CGContextFillRect(context, pdfPageRectScaled); 

CGContextSaveGState(context); 
// Flip the context so that the PDF page is rendered 
// right side up. 
CGContextTranslateCTM(context, 0.0f, pdfPageRectScaled.size.height); 
CGContextScaleCTM(context, 1.0f, -1.0f); 

// Scale the context so that the PDF page is rendered 
// at the correct size for the zoom level. 
CGContextScaleCTM(context, pdfScale, pdfScale); 
CGContextDrawPDFPage(context, page); 
CGContextRestoreGState(context);