Es gibt viele Ressourcen zum Anzeigen einer PDF-Datei in einer App UIView
. Ich arbeite gerade daran, ein PDF aus zu erstellen UIViews
.
Zum Beispiel habe ich ein UIView
, mit Subviews wie Textviews, UILabels
, UIImages
, so wie kann ich eine konvertieren groß UIView
als Ganzes , einschließlich aller seiner Subviews und subsubviews zu einer PDF - Datei?
Ich habe Apples iOS-Referenz überprüft . Es geht jedoch nur darum, Text- / Bildteile in eine PDF-Datei zu schreiben.
Das Problem, mit dem ich konfrontiert bin, ist, dass der Inhalt, den ich als PDF in eine Datei schreiben möchte, sehr groß ist. Wenn ich sie Stück für Stück in das PDF schreibe, wird das eine enorme Arbeit. Deshalb suche ich nach einer Möglichkeit, UIViews
in PDFs oder sogar Bitmaps zu schreiben .
Ich habe den Quellcode ausprobiert, den ich aus anderen Fragen / Antworten in Stack Overflow kopiert habe. Aber es gibt mir nur ein leeres PDF mit der UIView
Grenzgröße.
-(void)createPDFfromUIView:(UIView*)aView saveToDocumentsWithFileName:(NSString*)aFilename
{
// Creates a mutable data object for updating with binary data, like a byte array
NSMutableData *pdfData = [NSMutableData data];
// Points the pdf converter to the mutable data object and to the UIView to be converted
UIGraphicsBeginPDFContextToData(pdfData, aView.bounds, nil);
UIGraphicsBeginPDFPage();
// draws rect to the view and thus this is captured by UIGraphicsBeginPDFContextToData
[aView drawRect:aView.bounds];
// remove PDF rendering context
UIGraphicsEndPDFContext();
// Retrieves the document directories from the iOS device
NSArray* documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);
NSString* documentDirectory = [documentDirectories objectAtIndex:0];
NSString* documentDirectoryFilename = [documentDirectory stringByAppendingPathComponent:aFilename];
// instructs the mutable data object to write its context to a file on disk
[pdfData writeToFile:documentDirectoryFilename atomically:YES];
NSLog(@"documentDirectoryFileName: %@",documentDirectoryFilename);
}