PDF Tools

pending

by voidash

Zotero-style PDF reader with highlights, annotations, and AI chat. Spatial canvas integration for visual knowledge work.

Updated 26d agoMITDiscovered via Obsidian Unofficial Plugins
View on GitHub

PDF Tools

Obsidian plugin that turns your vault into a research workspace. Read and annotate PDFs with Zotero-style highlights, chat with AI about your documents, and organize everything on Obsidian's spatial canvas.

Features

PDF Reader

  • Dedicated PDF viewer with pdfjs-dist text layer — selectable, searchable text
  • Zotero-style highlights — select text, pick a color, highlights persist across sessions
  • Color labels — assign meanings to each highlight color (e.g. yellow = "Important", blue = "Definition") and filter annotations by color
  • Annotation library — left sidebar lists all PDFs and their annotations, grouped by page
  • Click-to-navigate — click an annotation card to jump to that page
  • Notes on highlights — add freeform notes to any highlight
  • Table of contents — collapsible outline sidebar for PDFs with bookmarks
  • Built-in dictionary — look up words with an embedded 82k-word WordNet dictionary (auto-downloaded on first use, with online API fallback)
  • Zoom controls — zoom in/out, fit to width
  • Search — full-text search within PDF (Ctrl/Cmd+F)
  • Replaces native viewer — clicking any PDF in the file explorer opens in this viewer

AI Chat

  • Multi-provider — OpenAI, Anthropic (Claude), or any OpenAI-compatible API (Ollama, LM Studio, local proxies)
  • Auto-context — sidebar detects the active file (PDF, markdown, canvas) and includes it as context
  • @ file mentions — type @ in the chat input to attach any vault file as context
  • Vault tools — AI can search your vault, read files, list directories, and inspect canvas items
  • Streaming responses — token-by-token output with markdown rendering
  • Chat persistence — conversations saved across sessions, chat history browser
  • Compaction — long conversations are automatically summarized to stay within context limits
  • Full-window chat — open AI chat as a full editor tab for more space

Canvas Integration

  • Right-click menu — "Open in PDF viewer", "Ask AI", "Spread pages", and "Extract current page" on canvas PDF nodes
  • Inline PDF rendering — PDF nodes on canvas render with text selection and highlights
  • Interactive mode — double-click a canvas PDF to enter interactive mode (scroll, select text); click outside to exit and resume node dragging
  • Spread pages — explode a multi-page PDF into individual page nodes on the canvas (choose down or right direction)
  • Canvas context — AI can read all items on the active canvas (text cards, files, connections)

Installation

From Community Plugins (recommended)

  1. Open Settings → Community plugins → Browse
  2. Search for "PDF Tools"
  3. Click Install, then Enable

Manual Installation

git clone https://github.com/voidash/obsidian-pdf-tools.git
cd obsidian-pdf-tools
npm install
npm run build

Copy main.js, styles.css, and manifest.json into your vault at .obsidian/plugins/pdf-tools/.

Configuration

Settings → PDF Tools

SettingDefaultDescription
Enable AIOnTurn off to use as a pure PDF reader/annotator
AI ProviderOpenAI15 providers: OpenAI, Anthropic, Gemini, DeepSeek, Groq, xAI, Mistral, OpenRouter, Together AI, Fireworks AI, Cerebras, Ollama, LM Studio, Local Proxy, Custom
API Key(empty)Your API key (leave empty for local providers)
Modelgpt-4oModel identifier (auto-filled per provider)
API Base URLhttps://api.openai.com/v1Endpoint URL (auto-filled per provider)
Max context chars80000Document text truncation limit
System prompt(built-in)AI instructions
Default zoom1.5Initial zoom level for PDF viewer (0.5–4.0)
Default highlight colorYellowPre-selected highlight color
Resume reading positionOnScroll to last read page on open
Export formatCalloutAnnotation export: callout blocks or plain markdown
Dictionary sourceAutoLocal WordNet, online API, or auto (local + fallback)
Highlight color labelsImportant, Key Point, Definition, Question, DisagreeMeaning assigned to each color

Supported Providers

ProviderBase URLDefault Model
OpenAIhttps://api.openai.com/v1gpt-4o
Anthropichttps://api.anthropic.com/v1claude-sonnet-4-20250514
Google Geminihttps://generativelanguage.googleapis.com/v1beta/openaigemini-2.5-pro
DeepSeekhttps://api.deepseek.com/v1deepseek-chat
Groqhttps://api.groq.com/openai/v1llama-3.3-70b-versatile
xAI (Grok)https://api.x.ai/v1grok-3
Mistralhttps://api.mistral.ai/v1mistral-large-latest
OpenRouterhttps://openrouter.ai/api/v1anthropic/claude-sonnet-4
Together AIhttps://api.together.xyz/v1meta-llama/Llama-3.3-70B-Instruct-Turbo
Fireworks AIhttps://api.fireworks.ai/inference/v1accounts/fireworks/models/llama-v3p3-70b-instruct
Cerebrashttps://api.cerebras.ai/v1llama-3.3-70b
Ollamahttp://localhost:11434/v1llama3
LM Studiohttp://localhost:1234/v1(your model)
Local Proxyhttp://localhost:3456/v1claude-opus-4
Custom(your endpoint)(your model)

Commands

CommandDescription
Open AI sidebarChat panel in the right sidebar
Open AI chat (full window)Full-size chat as an editor tab
Open PDF viewer paneDedicated PDF viewer
Open selected canvas PDF in viewerLoad selected canvas node
Ask Claude about selected canvas PDF(s)Set context + open sidebar
Ask Claude about all canvas PDFsSet context + open sidebar

Development

npm run dev   # watch mode — rebuilds on save
npm run build # production build

License

MIT

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.