ios - 使用 iOS 操作扩展将 PDF 导入自己的应用程序

标签 ios swift pdf ios-app-extension

我正在寻找导入 PDF 的可能性,以便用它做一些进一步的任务,就像这个问题中描述的那样:Importing PDF files to app

在互联网上看了两天后,我发现 Action 扩展可能是解决方案,这就是我得到的结果:

   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?")
    }

完成处理程序被正确调用,所以我假设 PDF 已加载 - 但我现在不知道如何继续。如果 Action 扩展只处理图像或文本,它很容易被向下转换,但我知道处理文件的唯一方法是使用路径名——我没有也不知道如何获得。另外,我很确定沙盒也是派对的一部分。

我想我只需要朝着正确的方向插入哪个类或协议(protocol)适合我的需要 - 非常感谢任何建议。

最佳答案

对于其他寻找答案的人 - 我自己发现了,而且非常简单:

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)
        }
    }
}

关于ios - 使用 iOS 操作扩展将 PDF 导入自己的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37512733/

相关文章:

iOS 重置设备方向

ios - 检测可以向 NSOutputStream 写入多少字节

ios - 无法以编程方式在 Swift 中创建 UIViewController

java - 从 HTML 转换为 PDF 时定义页面大小

macos - 如何从命令行在特定页面打开 PDF? (OSX 或 Linux)

ios - 即使在加载 View 后,自定义 UIView 的 subview 也等于 nil

iphone - 没有名称或路径为 'iphoneos2.0' 的 SDK

swift - 在 Swift 中从文本文件中提取数字和字符

ios - 删除导航栏而不去掉颜色 Swift

perl - PDF::API2 是否支持使用压缩的外部参照读取 PDF 1.5+?