在“文件”应用中打开PDF文件将返回nil

时间:2018-11-12 18:32:43

标签: ios pdf

我想打开一个位于iOS设备上“文件”应用中的pdf文件。我已经设置了所有内容,因此当用户选择使用我的应用程序打开pdf文件时,将调用以下函数:

-( BOOL )application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options


该文件的路径如下:

file:///private/var/mobile/Library/Mobile%20Documents/com~apple~CloudDocs/test.pdf

但是,当我使用以下代码以快速代码读取文件时,它将返回nil

let pdfDoc = CGPDFDocument( pdfURL )

任何想法
谢谢Reza

2 个答案:

答案 0 :(得分:0)

URL带有安全范围标记的书签,因此需要将其包装在url访问代码中:

if pdfURL.startAccessingSecurityScopedResource() {

    let pdfDoc = CGPDFDocument( pdfURL )
    // additional executions
    pdfURL.stopAccessingSecurityScopedResource()
}

答案 1 :(得分:0)

SWIFT 5 解决方案

如果您正在寻找更专业的方法来从 pdf URL 获取页面绘图和准确的文档,这可能是更好的方法

extension URL {

  func getPDFDocument() -> CGPDFDocument? {
    if self.startAccessingSecurityScopedResource() {
      guard let document = CGPDFDocument(self as CFURL) else { return nil }
      self.stopAccessingSecurityScopedResource()
      return document
    }
    return nil
  }
}