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

60 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 格式:不做
## 识别策略
```text
1. magic bytes文件头最可靠
2. MIME type根据扩展名推测
3. 文件扩展名(兜底)
```
使用 `infer` crate 做 magic bytes 检测,`mime_guess` 做 MIME 推测。
## 未知格式
无法识别的文件返回 `MaterialType::Unknown` + `PreviewMode::Unsupported`。App 侧应显示友好提示,不崩溃。