L'utilisation de UIActivityViewController et UIActivityItemProvider de partager PDF
J'ai besoin de partager et d'ouvrir des fichiers différents sous iOS par exemple une image à iCloud ou un pdf à iBooks. Il y a plusieurs exemples autour du texte et des images, mais rien pour un peu d'autre...
J'ai créé mon propre UIActivityItemProvider
; version simplifiée ici:
class MyItemProvider: UIActivityItemProvider {
override func item() -> AnyObject {
self.placeholderItem
}
override func activityViewController(activityViewController: UIActivityViewController, dataTypeIdentifierForActivityType activityType: String?) -> String {
return kUTTypePDF as String
}
func activityViewControllerPlaceholderItem(activityViewController: UIActivityViewController) -> AnyObject {
return self.placeholderItem
}
}
Et commencer à communiquer avec quelque chose comme:
let myPDF = NSData(contentsOfURL: NSBundle.mainBundle().URLForResource("testpdf", withExtension: "pdf")) {
let activityVC = UIActivityViewController(activityItems: [MyItemProvider(placeHolder: myPDF)], applicationActivities: nil)
self.presentViewController(activityVC, animated: true, completion: nil)
Je m'attends à un sharedialog comme:
Mais tout ce que j'obtiens est:
Des suggestions?
- La Documentation dit que le fait de fournir NSData (et seulement NSData) déclenche un appel pour
dataTypeIdentifierForActivityType
- mais ce n'est pas vrai. Aussi NSURL déclenchera que. Fournir NSURL au lieu de NSData montrera au moins la plupart des Applications installées - à l'exception de "enregistrer dans iBooks".
Vous devez vous connecter pour publier un commentaire.
**
Partager un fichier PDF avec UIActivityViewController dans Swift 3
**
J'ai passé beaucoup de temps à réfléchir à des façons de partager un fichier PDF dans UIWebView chargées à partir d'une URL, comme "http://youPdfFile.pdf"
Après une coupe de jours, j'ai trouvé ce que je pense que c'est le moyen le plus approprié:
1) Le fichier PDF doit d'abord être enregistré dans le système de fichiers. Par exemple, cela peut être fait après le chargement de la UIWebView:
2) Lire le fichier enregistré et puis de les partager. Cette méthode fonctionne pour moi en Swift 3.0.1:
UIActivityViewController(activityItems: [documentoPath!]
au lieu deUIActivityViewController(activityItems: [documento!]
Ce code fonctionne pour moi de partager un fichier. Bien sûr, le fichier a déjà été créé:
Vous devez passer fichier pdf url pour pdf applications prises en charge " options dans UIActivityViewController.
Les questions /réponses montrer comment partager un fichier PDF à partir d'un fichier local de l'URL. Cependant, vous n'avez pas à créer un fichier si vous ne voulez pas. L'alternative est d'utiliser
Data
représentation de votre fichier PDF.Disons que vous êtes à l'aide de
PDFKit
pour afficher les fichiers Pdf dans l'INTERFACE utilisateur. Cela signifie que de traiter avecPDFKit.PDFDocument
classe, qui adataRepresentation()
méthode. Cette méthode retourneData
qui peut être passé àUIActivityViewController
initialiser.