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

SwiftUI中WebView加载RTFD文件仅显示文字不显示图片问题

解决RTFD文件在WKWebView中图片不显示的问题

问题出在你对RTFD文件的处理和加载方式上:

  • RTFD本质是文件夹包,内部包含RTF文本文件和嵌入的图片资源,你把它压缩成zip后破坏了内部资源引用结构,导致WebView只能读取文本、找不到图片。
  • 用普通的URLRequest加载无法正确处理RTFD包内的资源访问权限。

修正步骤:

  1. 重新添加RTFD文件到项目

    • 不要压缩doc.rtfd,直接把整个doc.rtfd文件夹拖进Xcode
    • 拖入时勾选「Copy items if needed」,并确保关联到你的目标target
  2. 修改代码中的URL获取和加载逻辑
    替换原WebView结构体的代码,改用loadFileURL加载RTFD,同时正确获取包的URL:

import SwiftUI
import WebKit

struct WebView: UIViewRepresentable {
    
    func makeUIView(context: Context) -> WKWebView {
        return WKWebView()
    }
    
    func updateUIView(_ webView: WKWebView, context: Context) {
        guard let rtfdURL = Bundle.main.url(forResource: "doc", withExtension: "rtfd") else {
            print("找不到RTFD文件")
            return
        }
        // 允许WebView访问RTFD包所在目录的资源
        webView.loadFileURL(rtfdURL, allowingReadAccessTo: rtfdURL.deletingLastPathComponent())
    }
}

ExampleWebView的代码可以保持不变。

这样修改后,WebView就能正确解析RTFD包里的文本和图片资源了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 20:21:00