hellokunzai2 downloadsOpen EPUB, MOBI, AZW3, FB2, CBZ and TXT in a clean reader: paginated or continuous scrolling, adjustable font size, reading themes, table of contents, full-text search, a progress bookshelf and reading-time tracking.
一个干净、专注的 Obsidian 电子书阅读器。在 vault 里直接打开 EPUB、MOBI、AZW3、FB2、FBZ、CBZ 与 TXT,享受分页或连续滚动、可调字号、阅读主题、目录、全文搜索、带进度的书架以及阅读时长统计——全程不离开你的 vault。
纯阅读器定位:插件不修改你的原始电子书文件,也不向 vault 写入任何笔记/标注,所有阅读进度都只保存在插件自己的
data.json中。
A- / A+ 即时调整,设置页提供 12–28px 滑块,默认 16px。MutationObserver 自动同步)、白、暖光、护眼绿、羊皮纸、夜间。工具栏右侧色块下拉可随时切换。data.json,下次打开自动续读,且通过防抖写入避免频繁 I/O。hellokunzai/obsidian-epub-viewer。main.js、manifest.json、styles.css。你的Vault/.obsidian/plugins/epub-viewer/ 目录(目录不存在则新建)。open-epub-bookshelf)后从书架选择。在 Obsidian 设置 → Epub Viewer 中可配置:
| 选项 | 说明 | 默认值 |
|---|---|---|
| 默认翻页模式 | 分页 或 连续滚动 | 连续滚动(scrolled) |
| 默认字号 | 12–28px 滑块 | 16px |
| 阅读主题 | 跟随 Obsidian / 白 / 暖光 / 护眼绿 / 羊皮纸 / 夜间 | 跟随 Obsidian |
插件在渲染电子书时做了多重安全处理,避免恶意 EPUB 在 iframe 中执行代码:
<script>、<iframe>、<object>、<embed>,移除 on* 事件属性、srcdoc,以及 javascript: / vbscript: / 危险 data: 协议 URL。blob: / data: 样式表,插件会将这些样式表内联为 <style>,既保证排版正确又避开 CSP 限制。define 同名元素而报错。阅读引擎基于 foliate-js(^1.0.1),使用 esbuild 打包为 CJS。
main.ts
└─ EpubViewerPlugin(插件装配根)
├─ EpubReaderView 阅读器视图(工具栏 / 目录侧栏 / 进度条 / 全文搜索 / 阅读时长)
├─ EpubBookshelfView 书架视图(遍历 vault 电子书、展示进度与阅读数据)
├─ EpubViewerSettingsTab 设置页
└─ ReadingProgressStore 进度存储(内存缓存 + 防抖持久化到 data.json)
├─ EpubThemeManager 主题注册 / 应用 / 颜色解析 / 跟随 Obsidian 主题
├─ EpubChapterResolver TOC 树拍平、spine 映射、CFI 规范化
├─ EpubFoliateLoader foliate 引擎加载、TXT 特例、安全管道
├─ EpubFoliateGuard 自定义元素注册守卫(防多插件冲突)
├─ EpubFoliatePatches blob iframe / CSP 补丁
└─ EpubStylesheetInliner 样式表内联与内容净化
└─ i18n zh-cn / en 双语字典
环境要求:Node.js(含 npm)。
npm install # 安装依赖
npm run dev # 监听模式,实时重建 main.js
npm run build # 生产构建(无 sourcemap)
npm run typecheck # 类型检查
构建产物 main.js 由 esbuild.config.mjs 从 main.ts 打包生成,目标 es2020、CJS 格式,external 依赖含 obsidian、electron、@codemirror/* 及 Node 内置模块。
1.7.2(见 manifest.json 与 versions.json)。isDesktopOnly: false)。MIT © 2026 hellokunzai