Il existe de nombreuses ressources sur la façon d'afficher un PDF dans une application UIView
. Ce sur quoi je travaille maintenant, c'est de créer un PDF à partir de UIViews
.
Par exemple, j'ai un UIView
, avec comme subviews Textviews, UILabels
, UIImages
, alors comment puis - je convertir un grand UIView
dans son ensemble , y compris tous ses sous - vues et subsubviews à un PDF?
J'ai vérifié la référence iOS d'Apple . Cependant, il ne parle que de l'écriture de morceaux de texte / image dans un fichier PDF.
Le problème auquel je suis confronté est que le contenu que je souhaite écrire dans un fichier au format PDF est important. Si je les écris dans le PDF pièce par pièce, ce sera un travail énorme à faire. C'est pourquoi je recherche un moyen d'écrire UIViews
dans des PDF ou même des bitmaps.
J'ai essayé le code source que j'ai copié à partir d'autres questions / réponses dans Stack Overflow. Mais cela ne me donne qu'un PDF vierge avec la UIView
taille des limites.
-(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);
}
De plus, si quelqu'un est intéressé, voici le code Swift 3:
la source
Si quelqu'un est intéressé, voici le code Swift 2.1:
la source
completion: (success: Bool) -> ()
pour les cas de retour de gardeUn moyen très simple de créer un PDF à partir d'UIView utilise l'extension UIView
Swift 4.2
Crédit: http://www.swiftdevcenter.com/create-pdf-from-uiview-wkwebview-and-uitableview/
la source
Avec Swift 5 / iOS 12, vous pouvez combiner
CALayer
larender(in:)
méthode de avecUIGraphicsPDFRenderer
lawritePDF(to:withActions:)
méthode de pour créer un fichier PDF à partir d'uneUIView
instance.L'exemple de code Playground suivant montre comment utiliser
render(in:)
etwritePDF(to:withActions:)
:Remarque: pour pouvoir l'utiliser
playgroundSharedDataDirectory
dans votre Playground, vous devez d'abord créer un dossier appelé "Shared Playground Data" dans votre dossier "Documents" macOS.L'
UIViewController
implémentation complète de la sous-classe ci-dessous montre un moyen possible de refactoriser l'exemple précédent pour une application iOS:la source
Cela générera un PDF à partir d'UIView et ouvrira la boîte de dialogue d'impression, objectif C. Attachez-
- (IBAction)PrintPDF:(id)sender
vous à votre bouton à l'écran. Ajouter un#import <QuartzCore/QuartzCore.h>
cadreFichier H
Fichier M
la source
Je ne sais pas pourquoi, mais la réponse de casilic me donne un écran vide sur iOS6.1. Le code ci-dessous fonctionne.
la source