使用 iOS Action Extension 将 PDF 导入自己的应用程序
Import PDF into own App with iOS Action Extension
我正在寻找导入 PDF 的可能性,以便用它做一些进一步的任务,就像这个问题中描述的那样:
在互联网上四处寻找两天后,我发现操作扩展可能是解决方案,这就是我得到的结果:
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 已加载 - 但我现在不知道如何继续。如果动作扩展只处理图像或文本,它很容易被向下转换,但我知道处理文件的唯一方法是使用路径名——我没有也不知道如何获得。另外,我很确定沙盒也是派对的一部分。
我想我只需要朝正确的方向推动,Class 或协议可能适合我的需要 - 非常感谢任何建议。
对于其他寻找答案的人 - 我自己发现了,而且非常简单:
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)
}
}
}
我正在寻找导入 PDF 的可能性,以便用它做一些进一步的任务,就像这个问题中描述的那样:
在互联网上四处寻找两天后,我发现操作扩展可能是解决方案,这就是我得到的结果:
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 已加载 - 但我现在不知道如何继续。如果动作扩展只处理图像或文本,它很容易被向下转换,但我知道处理文件的唯一方法是使用路径名——我没有也不知道如何获得。另外,我很确定沙盒也是派对的一部分。
我想我只需要朝正确的方向推动,Class 或协议可能适合我的需要 - 非常感谢任何建议。
对于其他寻找答案的人 - 我自己发现了,而且非常简单:
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)
}
}
}