使用iOS Action Extension将PDF导入自己的应用程序

Fab*_*her 0 pdf ios swift ios-app-extension

我正在寻找导入PDF的可能性,以便用它做一些进一步的任务,就像本课题中所述:将PDF文件导入到app

经过两天的互联网浏览后,我发现行动扩展可能是解决方案,这是我得到了多远:

   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?")
    }
Run Code Online (Sandbox Code Playgroud)

正确调用完成处理程序,因此我假设PDF已加载 - 但我现在不知道如何继续.如果动作扩展只处理图像或文本,它可以轻松下载,但使用我知道的文件的唯一方法是路径名 - 我没有,也不知道如何获取.另外,我非常确定Sandboxing也是派对的一部分.

我想我只需要向正确的方向推进哪个类或协议可能适合我的需要 - 任何建议都高度赞赏.

Fab*_*her 5

对于其他寻找答案的人 - 我自己发现了,这很容易让人感到尴尬:

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)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)