taiyou kanada161 downloadsHighlight PDFs in the built-in viewer and keep only the highlighted text in a paired note, with jumps both ways.
Just trace the PDF. Highlight PDFs in Obsidian's built-in viewer, and the highlighted text collects in a note paired with the PDF. No more copying passages by hand or tidying them up afterwards.
https://github.com/user-attachments/assets/5667a2b6-7cd8-47cd-9c57-350b813780ce
The getting started video is in Japanese. The plugin's interface follows Obsidian's language (English or Japanese).
| Trace to highlight | Select text in a PDF with the mouse. It is highlighted right away, and the text is added to the paired note, keeping its paragraphs and lists. |
| Colors and headings | The pen at the top right of the PDF switches colors and heading levels (H1 to H3). Mark chapter headings first, and body text goes under its chapter. |
| Jump both ways | Click the dot after a highlight in your note to open the PDF there, and click a highlight in the PDF to jump back to the note. Edit the note text freely. |
| Capture figures | Draw a rectangle on the PDF to save that area as a PNG and embed it in the note. |
| Choose where highlights go | Insert highlights under a heading of your choice. If a note ends with data from other plugins (such as Excalidraw), highlights go before it. |
| Keep PDFs organized | Highlighted PDFs can be moved into a folder of your choice automatically. |
The PDF file itself is never modified. The note keeps only the text (quoted text ^hl-xxxxxx), and the position and color of each highlight are stored in the note property pdf-highlights (hidden in the properties panel).
You can also open PDF Simple in the community directory and select Add to Obsidian.
The plugin writes to your notes (it never modifies PDF files), so back up important vaults before trying it.
<PDF name>.md is created.・, ①, or 1.) are kept.# Excalidraw Data, or hidden %% comments), highlights go before it.## Summary). In notes that have that heading, highlights go under it. Only headings with the same number of # and the same capitalization match. Write Summary without # to match any heading level.pdf-highlights-heading property, and later highlights go there.## Summary, heading 1 becomes ###).## text, with a small "H2" badge on the PDF. Change the level later with Change heading level… in the right-click menu.^hl-…. If you paste one into another note, clicking the highlight in the PDF takes you there.pdf: "[[paper.pdf]]". Set it with Attach a PDF to this note, or with Attach PDF… in the note's file menu.Library/PDF), and a PDF is moved there when you highlight it or attach it to a note. The folder is created if missing, and a number is added if the name is taken. Wherever you drop PDFs in your vault, they gather in that folder once you start using them.| Command | What it does |
|---|---|
| Flip between note and PDF | Switch between the note and its PDF |
| Attach a PDF to this note | Choose a PDF to pair with the note |
| Open the note for this PDF (create if missing) | While a PDF is open |
| Highlight selection / Highlight selection (color) | One command per color; assign hotkeys or add them to the mobile toolbar |
| Toggle instant highlight | Switch between highlighting on select and off |
| Set pen to body text / Set pen to heading 1, 2, 3 | Switch the style (it stays until you change it) |
| Capture region as image | While a PDF is open (same as the square button) |
| Undo last highlight | Remove the last highlight, including its note line |
| Open highlight at cursor in PDF / Change color of highlight at cursor / Remove highlight at cursor | While editing a note |
| Insert PDF highlights under the heading at cursor | On a heading line (same as right-clicking the heading) |
| Move PDF to storage folder | Move the open PDF, or the note's attached PDF, to the storage folder |
| Clean up highlight records without text | Remove records whose text is gone from every note |
| Show getting started | Open the video and the overview |
Getting started (at the top), colors (add, remove, reorder), default color, insert as (body text or heading 1 to 3), when you select text (highlight right away, pick a color first, or do nothing), heading for highlights (one per line; empty means the end of the note), order of highlights (PDF order or order added), bullet list (off by default), hide records in properties (on by default), PDF storage folder and whether to move PDFs when highlighting, how to flip (same tab or side by side), and the property for the attached PDF.
![[…]]).MIT (LICENSE)
npm install
npm run vault:setup # set up the development vault (dev-vault/) with hot-reload
npm run references:fetch # fetch the official docs and the sample plugin into references/
npm run dev # watch build, copied into dev-vault/
Open dev-vault/ as a vault in Obsidian and trust its plugins. Edits are reloaded automatically. dev-vault/PDF/ contains generated test PDFs with no personal data.
| Command | What it does |
|---|---|
npm run dev |
Watch build and copy to dev-vault |
npm run build |
Production build (with type check) |
npm run check |
Type check, lint, format check, and tests |
npm run test:watch |
Tests in watch mode |
npm run format |
Format the code |
npm run e2e -- launch and so on |
Drive an isolated Obsidian instance (see docs/harness.md) |
Design notes (in Japanese): docs/implementation-plan.md. The source of the getting started video is in promo/.
src/main.ts lifecycle (registration, onLayoutReady)
src/commands.ts commands
src/actions.ts actions called from commands, menus, and clicks
src/settings-tab.ts settings tab (declarative)
src/i18n/ UI text in Japanese and English (t('key'))
src/lib/ pure logic without the Obsidian API (tested with vitest)
src/index/ index (metadata cache) and pairing
src/note/ note side (writing, navigation, decorations, menus)
src/viewer/ PDF side (built-in viewer DOM, overlay, selection, toolbar, region capture)
src/pdf/ types for the bundled pdf.js (loadPdfJs) and rendering regions to PNG
src/flip/ flipping between note and PDF
src/ui/ modals, labels, and the getting started screen
tests/ vitest
scripts/ dev vault setup, reference fetching, E2E
promo/ source of the getting started video
Requirements: Obsidian 1.13.0 or later. Works on desktop and mobile (no Node.js or Electron APIs).