Swift 5中如何在Safari或WebView打开本地PDF文件
解决本地PDF无法打开的问题
问题根源
你当前代码的错误在于重复构造URL:file本身已经是合法的file://协议URL,你却用它的absoluteString(即file:///xxx.pdf)再传入URL(filePath:),这会生成无效的URL(路径变为file://file:///xxx.pdf),自然无法正常打开。
修复代码
直接使用原有的fileURL调用open方法即可:
print(file.absoluteString) UIApplication.shared.open(file)
关于file://协议白名单的说明
iOS系统默认限制UIApplication.shared.open直接打开file://协议链接,即便在LSApplicationQueriesSchemes里添加file白名单也无法绕过——这是系统的安全策略,防止应用随意访问本地文件。
更可靠的本地PDF预览方案
如果直接调用open仍有问题,推荐使用官方支持的两种方式预览本地PDF:
方式1:使用QLPreviewController
import QuickLook class PDFPreviewViewController: QLPreviewController, QLPreviewControllerDataSource { var fileURL: URL! override func viewDidLoad() { super.viewDidLoad() dataSource = self } func numberOfPreviewItems(in controller: QLPreviewController) -> Int { return 1 } func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem { return fileURL as QLPreviewItem } } // 调用示例 let previewVC = PDFPreviewViewController() previewVC.fileURL = file present(previewVC, animated: true)
方式2:使用WKWebView加载
import WebKit let webView = WKWebView(frame: view.bounds) view.addSubview(webView) let request = URLRequest(url: file) webView.load(request)
内容的提问来源于stack exchange,提问作者trilogy
相关产品推荐
相关产品推荐

