Paper Reader

by Lumo
5
4
3
2
1
Score: 50/100

Description

PDF paper reader for Obsidian with annotations, ink, linked notes, and optional AI assistance.

Reviews

No reviews yet.

Stats

0
stars
137
downloads
0
forks
19
days
0
days
0
days
10
total PRs
0
open PRs
0
closed PRs
10
merged PRs
0
total issues
0
open issues
0
closed issues
38
commits

Latest Version

12 hours ago

Changelog

本版修复 AI 连接与单字搜索问题,并改进阅读器布局和标注界面。

  • 修复 AI 服务加载 node:https 失败,恢复桌面端网络请求。
  • 修复搜索 E 等高频字符卡顿;缓存页面索引和命中坐标,批量绘制高亮,保留全部结果并支持取消旧搜索。
  • 阅读区、侧栏或 AI 面板改变尺寸时,适应宽高自动重新排版;绘制笔画或拖动选区期间延后重排。
  • 简化页码显示,去掉阅读区焦点框;优化工具栏分体按钮、窄窗口更多菜单、缩略图及 AI 面板样式。
  • 侧栏新增缩略图、目录、标注标签;标注列表支持文字、颜色和类型筛选。
  • 高亮改为 55% 半透明;保留颜色设置和标注文件格式。

验证:npm run check 通过,103 项单元测试、139 项浏览器验收。真实 Obsidian 1.13.7 中已验证 WEFT 的 4189 个 E 命中与导航、侧栏宽度变化后自动重排、标注搜索筛选和新页码显示。

最低 Obsidian 版本:1.13.7。发布文件包含 main.js、manifest.json、styles.css,并附 GitHub 构建来源证明。

README file from

Github

Paper Reader

中文说明

Read PDF papers, annotate passages, draw ink, and export linked Markdown notes in Obsidian. Optional AI translation, explanations, and questions work with your own OpenAI-compatible endpoint.

Features

  • Text highlights, underlines, wavy underlines, strikethroughs, and editable notes.
  • Mouse ink with seven colors and adjustable 0.5–20 pt widths via slider or numeric input; select, recolor, resize, or delete strokes.
  • Session undo/redo, annotation sidebar, thumbnails, and document outline.
  • Full-text search, saved reading position, zoom, continuous, single-page, and two-page layouts.
  • Append-only Markdown export with links back to the PDF page and duplicate-export detection.
  • Optional streaming AI translation, concise explanations, and questions using your own API key, with loading feedback and per-answer copying.

Install

Desktop only. Minimum Obsidian version: 1.13.7. macOS is verified; Windows and Linux still need platform testing. Mobile support is not claimed.

Install Paper Reader from Settings → Community plugins → Browse, or use Add to Obsidian. For manual installation, download main.js, manifest.json, and styles.css from Releases, put them in <vault>/<config-dir>/plugins/paper-reader/ (the default config directory is .obsidian), then reload and enable the plugin. The PDF worker is embedded; no fourth file or runtime download is needed.

Use

Right-click a PDF and select Open in Paper Reader, or open a PDF and use the Open paper reader command. Replacing the built-in PDF viewer is optional and disabled by default; that option uses an internal Obsidian API and may conflict with other PDF plugins.

Select text to annotate it. The pencil toggles ink mode; Escape exits. Use Cmd/Ctrl+Z and Cmd/Ctrl+Shift+Z for undo/redo, and Cmd/Ctrl+F to search. The sidebar menu opens the annotation list, where you can export notes and return to source pages.

Data and privacy

  • Reading and annotation work offline. This plugin contains no telemetry or advertisements.
  • Annotations are stored in a sibling *.annotations.json file; they are not embedded in the PDF. Exported notes are saved as sibling *.notes.md files. Back up these sidecars with your PDF.
  • Reading positions and settings are stored in the plugin's data.json.
  • Remote AI endpoints must use HTTPS; HTTP is allowed only for localhost, 127.0.0.1, and ::1. Data goes directly to the configured provider, not a developer-operated relay. AI answers stream via SSE and have a 120-second timeout; closing the popup/panel or switching documents cancels the request. The desktop transport uses Node HTTP(S) and does not inherit Chromium proxy settings.
  • AI is optional. It requires an endpoint, model, and API key you supply. The provider may require an account and charge for usage. On an explicit AI action, selected text, configured surrounding context (full-document context by default, up to 48,000 characters), questions, and conversation history are sent to that endpoint. The connection test also sends a request. Your provider's privacy terms apply.
  • The API key is stored in plaintext in data.json, not a secure keychain. Vault synchronization or backups that include this file may copy it. Never publish it or attach it to a bug report.
  • No access to files outside the vault is required for normal use.

Limitations

  • No OCR: image-only scans cannot be searched or selected as text.
  • Ink has no pressure sensitivity, eraser, or shape recognition.
  • Some PDFs with unusual text layers can have search-highlight offsets. PDF.js fonts, CMaps, and image decoders are bundled for offline use; report a reproducible, shareable sample if rendering fails.
  • Undo history is per view/session and clears on reopen. Cross-vault back-links, simultaneous edits from multiple devices, and moved exported links are not guaranteed.
  • Old paper-reader:// links are unsupported; new exports use obsidian://paper-reader. Existing exported entries are not automatically migrated.

Development

Use Node.js 24 and npm:

npm ci
npx playwright install chromium
npm run check
npm run dev

npm run check runs unit tests, a production build, and Chromium integration tests. Tests use an original synthetic PDF in tests/fixtures/; they need neither a personal vault nor an AI account. The browser harness exercises real rendering and annotation modules with mocked storage and AI. It is not a substitute for testing Obsidian itself. npm run test:e2e -- /path/to/sample.pdf can use a PDF matching the fixture's title strings for targeted regression checks.

GitHub Actions checks pushes and pull requests. A numeric tag matching manifest.json creates a draft release with the three required assets. Update package.json, manifest.json, and versions.json together when releasing.

License and credits

Paper Reader is MIT licensed. It bundles Mozilla PDF.js under Apache-2.0; the license is included in THIRD-PARTY-LICENSES.txt and the distributed JavaScript. Obsidian is a trademark of its owners; this is an independent community project.

Report bugs using GitHub Issues. Include your OS, Obsidian/plugin versions, reproduction steps, and a non-sensitive sample if possible. Do not upload API keys or private papers.

中文说明

在 Obsidian 中阅读 PDF 论文,支持文字标注、批注、鼠标画笔、撤销重做、全文搜索、阅读位置恢复和带来源回跳的 Markdown 笔记导出。AI 翻译、解释和问答为可选功能,使用你自己的兼容接口和 API Key。

首版仅支持桌面,要求 Obsidian 1.13.7 或更新版本;已验证 macOS,Windows/Linux 尚待实测。可在 设置 → 第三方插件 → 浏览 中搜索 Paper Reader 安装。默认不接管内置 PDF 阅读器,可右键 PDF 选择 Open in Paper Reader。

标注单独保存在 PDF 旁的 *.annotations.json,不写入原 PDF;笔记导出到 *.notes.md。请一起备份。AI 操作会发送选中文字、配置的上下文和问答历史到你指定的接口,费用和数据处理由服务商决定。API Key 明文保存在插件 data.json 中,切勿公开上传。离线阅读无需 API,也没有遥测或广告。

目前不支持 OCR、压感、橡皮擦及形状识别。旧回跳协议不自动迁移;完整限制见上文。提交问题时请避免附上私人论文、标注或密钥。