适用于 macOS · iPad · iPhone
DjVuReader
一款为扫描书、档案与学术文献而写的原生 DjVu 阅读器。界面用 SwiftUI,内核用 Rust。阅读全程留在本机——没有账号,没有分析统计,没有第三方追踪。
Apple 原生应用、真实 Rust 解码器、全文搜索、目录解析、设备端 OCR、标注与页面渲染,已经作为一个整体在 App Store 上架,支持 iPhone 与 iPad。Mac 版能跑,但没有发布。

截自上架版本的真实截图 —— 页面由 Rust 内核在设备上解码,不是示意图。
01为什么是 DjVu,为什么是这款阅读器
档案馆从未离开的那个格式。
DjVu 压缩扫描页的方式,是按页面本来的构成拆开:锐利的黑色文字是一层,照片式的背景是另一层,剩下的颜色交给调色板。一本 700 页的专著,做成 PDF 要 400 MB,做成 DjVu 只要几十兆,而且衬线依然清晰。这就是为什么几十年过去,图书馆扫描件、数学档案与学术仓储仍在用它。
这个格式一直缺的,是一款有人维护的 Apple 客户端。桌面端的阅读器是移植的移植;移动端多是靠广告养活的壳,把页面画出来就算完事。我们用宽松许可证在 Rust 里重写解码器,再用 SwiftUI 包一层真正像系统一部分的应用——分栏、键盘焦点、动态字体、VoiceOver 都在。
- 按层解码
JB2 文字掩码、IW44 小波背景、FGbz 调色板与 MMR 掩码分层解码后再合成——与编码器当初构建这一页的方式相同。
- 读的是结构,不只是像素
Bundled、Indirect 与共享字典文档都能解析。隐藏文本层、NAVM 目录、缩略图与内嵌标注都以数据形式取出,而不是压成一张平图。
- 宽松许可的内核
Rust 解码器不含任何 GPL 运行时代码。DjVuLibre 仅在开发期作为 oracle 使用,用来对照已知样本校验解析器。
02隐私立场
文件不会离开这个房间。
DjVuReader 对待「打开一份文档」的方式,像图书馆员对待一张索书单——这一页只在你和书架之间流转,不去别处。没有副本被寄走,也没有那种表面写着「发送报告」、实际另有所为的下拉菜单。
本站点同样如此:静态渲染、由 CDN 分发、不含任何第三方脚本。
- 留在设备上
你的 DjVu 文件、书签与阅读记录,都留在你打开它们的那台设备上。应用从不上传。
- 没有账号
没有登录。没有邮箱,没有 Apple ID 交接,也没有我们留在服务器上的匿名用户标识。
- 没有分析统计
没有第三方 SDK。没有网页信标。没有广告网络。没有 A/B 测试服务。我们不度量你的阅读。
- 没有 Cookie
本落地页不写入任何 Cookie,也不加载第三方 JavaScript。它唯一存下的,是你选择的浅色/深色偏好,保存在这个浏览器的 local storage 里。
应用附带的 Privacy Manifest 声明:不追踪、无追踪域名、不收集任何数据类型。Required Reason API 条目仅限文件时间戳、磁盘空间与 user defaults 三类。
Rust 解码器 · Vision OCR · 本地存储
文档 · 阅读状态 · OCR 文本 · 手写标注
商品查询、购买、恢复——不含任何文档数据
无分析统计 · 无账号 · 无同步 · 无广告网络
03为 Apple 平台而写
是阅读器,不是查看器。
这里列出的原生控件都已上架——分栏视图、侧栏、搜索抽屉、页面条、设置、无障碍与 Privacy Manifest。真实的 Rust 解码器就接在这套外壳里,今天在 App Store 上就能用(iPhone / iPad)。
- 文档导入
读你的书库,不是云端
从访达、文件 App、隔空投送或授权文件夹打开 .djvu 与 .djv。应用把 DjVu 声明为 imported UTType——你的文件在我们的应用之外仍然保有自己的身份。
- 文本与搜索
搜正文,而不只是封面
带隐藏文本层的页面可以立即搜索。命中结果给出页码、行号与一小段上下文,按 Unicode 处理,包含中日韩子串。
- 目录
尊重卷册结构的目录
文档带 NAVM 目录时,侧栏会展开为可跳转的层级列表。没有目录时阅读器保持诚实:给出数字页索引,而不是猜章节。
- 多窗口
两页、两窗口、一个应用
基于 NavigationSplitView 构建,已为台前调度与 Mac Catalyst 准备。开第二个窗口,就能一边对照索引页一边读正文。
- 键盘优先
为键盘而写
方向键翻页,菜单命令暴露搜索与打开操作,阅读器快捷键不与系统冲突,并且能在系统菜单里被发现。
- Catalyst
在 Mac 上像 Mac
Catalyst 是为 Mac 优化,而不是把界面拉大。窗口外观、菜单栏与键盘焦点保持原生;同一套代码在 iPad 上自适应布局。
04诚实的进度
哪些已经交付,哪些还在路上。
DjVuReader 按里程碑推进,进度写在对外文档里。这张表就是工程团队内部跟踪的同一份状态——你和路线图之间没有一层市场话术。
| 能力 | 状态 | ||
|---|---|---|---|
| SwiftUI 应用外壳书库、阅读器、侧栏、搜索抽屉、设置 | 书库、阅读器、侧栏、搜索抽屉、设置 | 已上架iPhone、iPad 与 Mac Catalyst 均为原生界面 | iPhone、iPad 与 Mac Catalyst 均为原生界面 |
| DjVuKit Swift 包领域模型、真实 FFI 客户端、文本搜索 | 领域模型、真实 FFI 客户端、文本搜索 | 已上架存在 DjVuCore.xcframework 时链接 Rust 解码器 | 存在 DjVuCore.xcframework 时链接 Rust 解码器 |
| DjVu IFF 解析器(Rust)Bundled / Indirect / 共享字典结构 | Bundled / Indirect / 共享字典结构 | 已上架合成、畸形、公开与小规模真实语料均已纳入门禁 | 合成、畸形、公开与小规模真实语料均已纳入门禁 |
| FFI 元数据页数、尺寸、dpi、gamma、方向 | 页数、尺寸、dpi、gamma、方向 | 已上架通过真实 Swift 客户端读取 | 通过真实 Swift 客户端读取 |
| 文本层(TXTa / TXTz)分页文本、压缩文本、Unicode 感知搜索 | 分页文本、压缩文本、Unicode 感知搜索 | 已上架BZZ 压缩文本属于已支持的 MVP 范围 | BZZ 压缩文本属于已支持的 MVP 范围 |
| 页面渲染JB2、IW44、FGbz、FG44、基线 JPEG(BGjp / FGjp)、Smmr MMR 掩码 | JB2、IW44、FGbz、FG44、基线 JPEG(BGjp / FGjp)、Smmr MMR 掩码 | 已上架真实渲染器;仅非基线 JPEG 子变体按设计降级 | 真实渲染器;仅非基线 JPEG 子变体按设计降级 |
| NAVM 目录真实章节 / 标题树 | 真实章节 / 标题树 | 已上架BZZ 解码目录树,并带安全回退 | BZZ 解码目录树,并带安全回退 |
| 标注与缩略图ANTa / ANTz 标注解析、TH44 缩略图像素 | ANTa / ANTz 标注解析、TH44 缩略图像素 | 已上架解析进独立通道;缩略图经 IW44 解码 | 解析进独立通道;缩略图经 IW44 解码 |
| 选择、OCR 与笔记文本选择 / 复制、设备端 OCR、本地高亮与手写 | 文本选择 / 复制、设备端 OCR、本地高亮与手写 | 已上架纯图页由 Vision 在设备端 OCR;笔记留在本机 | 纯图页由 Vision 在设备端 OCR;笔记留在本机 |
| 不支持的 DjVu 块BGjp / FGjp 中的非基线 JPEG 子变体 | BGjp / FGjp 中的非基线 JPEG 子变体 | 不支持渐进 / 算术 / 无损 / 12 位 / CMYK 会干净地降级 | 渐进 / 算术 / 无损 / 12 位 / CMYK 会干净地降级 |
| App StoreiPhone / iPad 公开下载 | iPhone / iPad 公开下载 | 已上架已上架;Mac App Store 版本没有提交 | 已上架;Mac App Store 版本没有提交 |
兼容性由 make ci-pr 在每次改动上把关。Mac App Store 版本还需要自己的打包与审核。我们不会宣称支持已公布支持矩阵之外的编解码器。
05系统要求
面向当代 Apple 系统,不留意外。
我们面向 Sequoia 与 iOS 18 世代发布,以便直接依赖新的 Privacy Manifest、NavigationSplitView 与 Mac Catalyst 行为。我们不会为了装机量去迁就更旧的系统版本。
- iPhone
- iOS 18 及以上
- iPad
- iPadOS 18 及以上
- Mac
- macOS 15(Sequoia)及以上 · Apple 芯片与 Intel 均可
- 文件
- .djvu、.djv,以及受支持兼容集内的 bundled DjVu 文档。
- 网络
- 阅读不需要联网。购买与恢复通过 Apple StoreKit 进行。
定价立场
免费阅读。一次解锁,永不订阅。
- 应用免费下载。自行导入的文档中,可完整阅读三份;内置样本不占名额。
- 一次性非消耗型「永久解锁」开启无限书库、标注、导出 PDF、打印与朗读。没有订阅、广告、账号或推荐计划。
- 售价由 App Store 按当地货币展示。Mac App Store 版本尚未提供。
06发布状态
iPhone 与 iPad 版已在 App Store。
这一节原本是一份门槛清单,而不是一个点不动的徽章。五道里四道已绿,应用也已上架;没绿的那道是 Mac App Store——它仍然留在清单上,标着没过,而不是被悄悄删掉。
- 已上架
解码器与应用外壳
Rust 解码器、DjVuKit 桥接与 SwiftUI 阅读器已在设备上跑通,并通过门禁语料校验。
- 已上架
隐私清单与法务页面
Privacy Manifest、隐私政策与支持页已发布,且与应用的真实行为一致。
- 已上架
签名归档
iOS 与 iPadOS 的发布签名归档已通过 App Store 校验。Mac Catalyst 归档能构建,但没有提交。
- 尚未完成
公开 TestFlight
没有做过对外公测:应用是直接送审的。它留在清单上,是因为这是一道我们没有走过的门槛,不是走过了。
- 已上架
商店元数据与截图
覆盖各设备尺寸的真实截图、十种语言的文案、分类、年龄分级与确定的价格点,均已发布在商店记录上。
- 已上架
App Store 审核
iPhone / iPad 的 App Store 审核已通过,应用已上架。Mac App Store 没有走过审核。
在 App Store 搜索 DjVu Reader 即可。没有邮件订阅,没有「上线通知我」表单,也没有账号——本页不收集任何联系方式。
07常见问题
有人问起时,我们是这么答的。
在 App Store 上架了吗?
iPhone 与 iPad 版已经上架。Mac 版没有:Catalyst 构建能跑,但 Mac App Store 的打包与审核都没做,所以本页不会宣称有 Mac 版可下载。
今天能打开所有 DjVu 文件吗?
接近了。兼容集覆盖 bundled DjVu/DjVm 结构、共享资源、BZZ 压缩文本、NAVM 目录、JB2 掩码、IW44 前后景层、FGbz 调色板、基线 JPEG 层(BGjp / FGjp)、MMR 掩码(Smmr)、缩略图像素(TH44)以及内嵌标注解析(ANTa / ANTz)。唯一有意不支持的范围是非基线 JPEG 子变体——渐进、算术、无损、12 位与 CMYK——它们会干净地降级,而不是直接失败。
应用会怎么处理我的文件?
它以安全作用域权限打开文件,随后把导入的文档复制到应用的私有本地存储,以便重启后仍然可用。DjVuReader 从不上传或同步它们。设备端 OCR 与手写标注同样留在本机。没有账号体系、没有云同步、没有遥测。Privacy Manifest 声明不追踪、不收集任何数据类型。
有 OCR、标注或格式转换吗?
阅读、文本选择、设备端 OCR 与标注都已具备。你可以选中并复制页面文本,对纯图扫描用 Vision 在设备端识别文字,也可以用高亮与钢笔在页面上留下只存在本机的墨迹。整本「导出为 PDF」已内置——它会用同一套解码器逐页重新渲染(含墨迹),让 DjVu 书能被只认 PDF 的应用打开。除此之外它仍是阅读器而非编辑器:不提供 DjVu 转其他格式的工具,也不做原文件的就地编辑。
为什么是 DjVu,为什么是现在?
许多大型扫描书语料与学术档案至今仍以 DjVu 分发。而 Apple 平台上已有的阅读器,要么长期无人维护,要么半成品感明显。我们用宽松许可证在 Rust 中重写解码器,并用一款尊重平台的 SwiftUI 应用把它包起来。
和 DjVuLibre 是什么关系?许可证如何?
DjVuReader 的运行时不包含任何 DjVuLibre 代码。DjVuLibre 只在开发期作为 oracle,用来对照已知样本校验 Rust 解析器。发布的应用与本站点都不含 GPL 运行时代码。
这个网站会追踪我吗?
不会。它是一个静态站点,没有 Cookie、没有分析统计、没有第三方脚本,也没有远程字体——所有资源都由本域提供。浏览器里唯一存下的,是你选择的浅色/深色偏好,保存在 local storage 中,不会发往任何地方。
可以跟进开发吗?
仓库里有逐轮工程报告、架构决策记录(ADR)以及带验收门的明确路线图。接下来能被外部观察到的变化,是更广的语料信心与 Mac App Store 打包。
