2016-05-29 3 views
0

Ich bin auf der Suche nach einer Möglichkeit, eine PDF-Datei zu importieren, um einige weiteren Aufgaben damit zu tun, wie in dieser Frage beschrieben: Importing PDF files to appImport PDF in eigene App mit iOS Action-Erweiterung

Nach zwei Tagen suchen um in den Zwischenstegen fand ich, dass eine Aktion Erweiterung die Lösung sein könnte, ist dies, wie weit ich habe:

override func viewDidLoad() { 
     super.viewDidLoad() 

     let fileItem = self.extensionContext!.inputItems.first as! NSExtensionItem 

     let textItemProvider = fileItem.attachments!.first as! NSItemProvider 

     let identifier = kUTTypePDF as String 

     if textItemProvider.hasItemConformingToTypeIdentifier(identifier) { 

      textItemProvider.loadItemForTypeIdentifier(identifier, options: nil, completionHandler: handleCompletion) 
     } 
    } 

    func handleCompletion(pdfFile: NSSecureCoding?, error: NSError!) { 

     print("PDF loaded - What to do now?") 
    } 

die Abschluss-Handler richtig so genannt wird, gehe ich davon aus dem PDF geladen wird - aber dann nicht ich jetzt, wie man vorgeht. Wenn die Aktionserweiterung nur Bilder oder Text behandelt, könnte sie leicht heruntergerechnet werden, aber die einzige Möglichkeit, mit Dateien zu arbeiten, die ich kenne, sind Pfadnamen - die ich nicht habe und nicht zu erhalten weiß. Außerdem bin ich mir ziemlich sicher, Sandboxing ist auch Teil der Party.

Ich denke, ich brauche nur einen Stoß in die richtige Richtung, welche Klasse oder Protokoll könnte für meine Bedürfnisse geeignet sein - irgendwelche Vorschläge sehr geschätzt.

Antwort

2

Für alle anderen nach einer Antwort suchen - fand ich von mir aus, und es ist beschämend einfach:

func handleCompletion(fileURL: NSSecureCoding?, error: NSError!) { 

    if let fileURL = fileURL as? NSURL { 

     let newFileURL = NSURL(fileURLWithPath: NSTemporaryDirectory().stringByAppendingString("test.pdf")) 

     let fileManager = NSFileManager.defaultManager() 

     do { 
      try fileManager.copyItemAtURL(fileURL, toURL: newFileURL) 
      // Do further stuff 
     } 
     catch { 
      print(error) 
     } 
    } 
}