PDF Canvas
简体中文

PDF Canvas is a VS Code extension for reading, annotating, and connecting ideas
across PDFs on an infinite canvas. It opens the human-readable .pcanvas
format as a custom editor and keeps the whole research workflow inside your
workspace.
PDF Canvas is currently a preview. Back up important canvases before upgrading.
What you can do
- Arrange multiple PDFs and Markdown notes freely on an infinite canvas.
- Select and copy PDF text, create text highlights, and mark rectangular regions.
- Draw connectors from annotations to existing notes, or drop a connector on
empty space to create a linked note.
- Write Markdown with inline and display KaTeX equations.
- Copy a note and its linked PDF quotations as a ready-to-share PNG card.
- Pan, zoom, multi-select, move, resize, collapse, delete, undo, and redo.
- Export annotations and linked notes to Markdown in PDF and page order.
- Save stable, human-readable JSON that produces useful Git diffs.
- Synchronize canvas JSON through WebDAV, including built-in Jianguoyun support.
- Use the canvas UI in English, Simplified Chinese, Traditional Chinese, or Japanese.
Install
Install PDF Canvas from the Visual Studio Marketplace,
or download a VSIX from GitHub Releases
and run Extensions: Install from VSIX... in VS Code.
PDF Canvas requires VS Code 1.84 or newer. Node.js is needed only when building
the extension from source.
Quick start
- Right-click a folder in the Explorer and choose New PDF Canvas.
- Drag a PDF onto the canvas, or choose + PDF from the toolbar.
- Press
T to select text, H to highlight text, or R to mark a region.
- Drag the circular handle on an annotation to a note. Drop it on empty canvas
space to create a linked note immediately.
- Double-click a note to edit it. Use
$E=mc^2$ for inline math or $$ ... $$
on its own line for display math.
- Select the copy button in a note header to place a PNG card containing the
note and its linked sources on the clipboard.
- Press
Cmd/Ctrl+S to save.
PDFs selected from the VS Code Explorer or file picker are stored as relative
references. PDFs dragged from Finder or another external application are copied
to an assets/ folder when pdfCanvas.copyPdfIntoWorkspace is enabled. External
files larger than 32 MB must be added with + PDF.
Controls
| Action |
Control |
| Pan |
Space + drag, middle/right-button drag, trackpad gesture, or drag a PDF page |
| Zoom |
Ctrl/Cmd + wheel or trackpad pinch |
| Fit all content |
Shift+1 |
| Reset zoom |
Cmd/Ctrl+0 |
| Switch tools |
V Select, T Text, H Highlight, R Region, N Note |
| Create a note |
Double-click empty space, or press N and click |
| Edit a note |
Double-click it, or select it and press Enter |
| Multi-select |
Drag on empty space, or Shift + click |
| Delete |
Delete / Backspace |
| Undo / redo |
Cmd/Ctrl+Z / Cmd/Ctrl+Shift+Z |
Connectors do not use a separate tool. Annotation handles are always available.
Remote sync
Remote sync uploads only the .pcanvas JSON. Referenced PDFs and the assets/
folder are never uploaded automatically.
For Jianguoyun:
- Create an app password under Account Information → Security Options →
Third-party App Management. Do not use your account password.
- Run PDF Canvas: Configure Remote Sync. Keep the default WebDAV URL, enter
your login email and app password, and choose a shared remote folder name.
- Use the cloud buttons in the editor title bar to upload or pull a canvas.
- On another device, run PDF Canvas: Browse Jianguoyun Remote Canvases to
download a canvas into the current workspace.
Credentials are stored in VS Code SecretStorage. Sync is disabled in untrusted
workspaces, and HTTPS is required except for loopback development servers.
Commands
| Command |
Purpose |
PDF Canvas: New PDF Canvas |
Create a .pcanvas file |
PDF Canvas: Add PDF |
Add one or more PDF references |
PDF Canvas: Fit View |
Fit all canvas content in the viewport |
PDF Canvas: Export as Markdown |
Export annotations and notes to a sibling .md file |
PDF Canvas: Configure Remote Sync |
Configure WebDAV and credentials |
PDF Canvas: Browse Jianguoyun Remote Canvases |
Find and download remote canvases |
PDF Canvas: Upload to Remote |
Upload the current canvas with conflict checks |
PDF Canvas: Pull from Remote |
Pull while protecting unsynchronized local changes |
Settings
| Setting |
Default |
Purpose |
pdfCanvas.language |
zh-CN |
Canvas interface language |
pdfCanvas.defaultHighlightColor |
yellow |
Color for new annotations |
pdfCanvas.copyPdfIntoWorkspace |
true |
Copy externally dropped PDFs into assets/ |
pdfCanvas.maxRenderScale |
2.5 |
Maximum PDF bitmap render scale |
pdfCanvas.noteDefaultWidth |
320 |
Default note width |
pdfCanvas.sync.serverUrl |
Jianguoyun WebDAV |
WebDAV server URL |
pdfCanvas.sync.authType |
webdav |
webdav or bearer-token authentication |
pdfCanvas.sync.username |
Empty |
WebDAV username or Jianguoyun email |
pdfCanvas.sync.namespace |
PDF Canvas |
Remote folder shared by devices |
.pcanvas is stable, human-readable JSON. Annotation coordinates are normalized
to PDF pages, and viewport state is stored in VS Code workspace state so that
navigation does not dirty the document. Invalid files open in a protected
read-only state instead of being overwritten.
PDF Canvas has no telemetry or advertising. It renders PDFs and Markdown locally
and contacts a WebDAV service only when you explicitly use a sync command. Raw
HTML is disabled in Markdown, and external note links are limited to HTTP(S).
See SECURITY.md for vulnerability reporting and SUPPORT.md
for help.
Development
npm ci
npm run check
npm run package
Open the repository in VS Code and press F5 to launch an Extension Development
Host. npm run watch rebuilds both bundles during development. For webview and
PDF rendering checks, run npm run smoke and open the reported local URL.
Please read CONTRIBUTING.md before submitting a change.
Known limitations
- Connectors currently run from PDF annotations to notes, not note to note.
- Local relative-path images in notes are not converted to webview resources.
- Region annotations do not embed cropped images in notes.
- PDF files are not included in remote synchronization.
- Frames, PNG canvas export, cross-page merged selections, and Obsidian
.canvas
conversion are not yet supported.
License
PDF Canvas is released under the MIT License. Bundled third-party
components retain their original licenses; see THIRD_PARTY_NOTICES.md.