You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac-Catalyst(Sonoma 14.0)中WKWebView无法加载PDF的问题

macOS 14下WKWebView加载PDF白屏的解决方案

你当前通过load(_:mimeType:characterEncodingName:baseURL:)直接加载PDF数据的实现,在macOS 14中出现兼容性问题,导致白屏。以下是几个可行的解决办法:

  • 直接加载本地文件URL
    改用loadFileURL(_:allowingReadAccessTo:)方法加载PDF文件,macOS 14对本地文件的加载逻辑支持更稳定:

    do {
        guard anUrl.isFileURL else {
            print("URL不是本地文件路径")
            CommanMethods.sharedInstance.showAlert(title: "", message: "PreviewAlertKey".localized(withComment: ""), viewController: self)
            return
        }
        webView?.loadFileURL(anUrl, allowingReadAccessTo: anUrl.deletingLastPathComponent())
    } catch {
        print("加载PDF失败: \(error)")
        CommanMethods.sharedInstance.showAlert(title: "", message: "PreviewAlertKey".localized(withComment: ""), viewController: self)
    }
    
  • 将PDF数据写入临时文件后加载
    如果必须通过Data对象加载,可先将数据写入临时文件,再用文件URL加载,规避直接加载Data的兼容性问题:

    var pdfData: Data? = nil
    do {
        pdfData = try Data(contentsOf: anUrl)
        guard let aData = pdfData else { return }
        
        let tempDir = FileManager.default.temporaryDirectory
        let tempFileUrl = tempDir.appendingPathComponent("temp_\(UUID().uuidString).pdf")
        try aData.write(to: tempFileUrl)
        
        webView?.loadFileURL(tempFileUrl, allowingReadAccessTo: tempDir)
    } catch {
        print("PDF处理失败: \(error)")
        CommanMethods.sharedInstance.showAlert(title: "", message: "PreviewAlertKey".localized(withComment: ""), viewController: self)
    }
    
  • 校验baseURL有效性
    原代码中URL.init(string: path as String)!的隐式解包可能导致无效baseURL,在macOS 14中可能触发加载异常,建议先校验:

    if let aData = pdfData, let baseUrl = URL(string: path as String) {
        webView?.load(aData, mimeType: "application/pdf", characterEncodingName: "utf-8", baseURL: baseUrl)
    } else {
        print("baseURL无效")
        CommanMethods.sharedInstance.showAlert(title: "", message: "PreviewAlertKey".localized(withComment: ""), viewController: self)
    }
    

内容的提问来源于stack exchange,提问作者Jones

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 15:57:19