zhixi-document-runtime/docs/supported-formats.md

2.2 KiB
Raw Blame History

Supported Formats

PreviewMode

每种文件格式对应一个 PreviewMode

Mode 含义 由谁渲染
NativeReader 知习内置阅读器 App 原生渲染 + Rust 提供 blocks
PlatformPreview 平台系统预览 iOS QuickLook / Android 系统能力
ExternalOpen 外部 App 打开 用户选择外部应用
Unsupported 暂不支持 显示提示

格式矩阵

第一版(当前优先级)

格式 扩展名 PreviewMode Rust 职责 App 职责
Markdown .md NativeReader 解析为 DocumentBlock 原生渲染 block 列表
纯文本 .txt NativeReader 读取内容,分段落/行 原生文本渲染
PDF .pdf PlatformPreview 定义阅读位置模型 iOS PDFKit / Android 系统
PNG .png NativeReader metadata宽高/格式) 原生图片查看
JPEG .jpg .jpeg NativeReader metadata 原生图片查看
WebP .webp NativeReader metadata 原生图片查看
GIF .gif NativeReader metadata 原生图片查看
Word .doc .docx PlatformPreview 不解析 QuickLook / 系统预览
Excel .xls .xlsx PlatformPreview 不解析 QuickLook / 系统预览
PPT .ppt .pptx ExternalOpen 不解析 外部 App 打开

后续支持

格式 目标 PreviewMode 备注
EPUB NativeReader Rust 解析 OPF/spine/navApp WebView 渲染章节
PDF NativeReader增强 评估 PDFium支持文本提取和搜索

明确不做

  • OCR不做图片文字识别
  • PDF 标注:不做高亮/划线/批注
  • Office 内置高保真预览:不解析 Word/Excel/PPT 排版
  • 复杂富文本:不做格式保留
  • DRM 电子书:不做
  • Kindle 格式:不做

识别策略

1. magic bytes文件头最可靠
2. MIME type根据扩展名推测
3. 文件扩展名(兜底)

使用 infer crate 做 magic bytes 检测,mime_guess 做 MIME 推测。

未知格式

无法识别的文件返回 MaterialType::Unknown + PreviewMode::Unsupported。App 侧应显示友好提示,不崩溃。