2.2 KiB
2.2 KiB
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 |
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/nav,App WebView 渲染章节 |
| 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 侧应显示友好提示,不崩溃。