PDF++ Exporter

by jldiaz
5
4
3
2
1
Score: 52/100

Description

Category: Collaboration & Sharing

The PDF++ Exporter plugin takes annotations and notes linked from Markdown back into a PDF as standard highlights, rectangles and popup comments, so the file can be shared outside the vault without losing context. It works with text selections and area captures, pulls comments from callouts, paragraphs or list items and lets you control colour filters, opacity, link replacement text and sticky note output for viewer compatibility. The plugin is built for people who review papers, contracts or other documents in notes first and need a final annotated PDF later. It also handles dummy PDFs that point to remote files, using cached or fetched copies when needed, which keeps the export flow usable even when the source is not a local PDF.

Reviews

No reviews yet.

Stats

3
stars
2,448
downloads
0
forks
99
days
3
days
3
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
1
total issues
0
open issues
1
closed issues
18
commits

Latest Version

4 days ago

Changelog

Improvements & Fixes in 1.0.6

  • Support for PDF++ custom colors: Automatically detects and applies custom highlight colors configured in PDF++ (such as Toc, Important, etc.).
  • Fix invisible annotations in external viewers: Added strict hex validation in color parsing to prevent NaN color components that caused external viewers (macOS Preview, Adobe Acrobat, Edge, Safari) to reject annotations.
  • Bright yellow highlighter: Tuned default yellow highlight color to a clean, bright tone to avoid an amber/orange appearance.
  • Improved sticky note appearance: Compacted sticky note icon size to 14 pt, switched standard icon to Note, and enabled NoZoom flags.

README file from

Github

PDF++ Exporter for Obsidian

PDF++ Exporter is an Obsidian plugin designed to "burn" (physically write) your annotations and notes taken in Markdown files back into your PDF documents using standard PDF annotations (highlight rectangles and pop-up comments).

It is the perfect companion for the PDF++ plugin, allowing you to share your annotated papers, books, or documents with non-Obsidian users (openable in Adobe Acrobat, macOS Preview, PDF.js, or any standard PDF viewer).


🎯 Purpose

PDF++ enables annotating PDFs without modifying the original files, keeping a pristine copy in your vault and saving all notes, highlights, and comments inside Markdown files.

While this non-destructive approach is ideal inside Obsidian, the connection between your notes and the PDF is lost when you share the document externally. PDF++ Exporter solves this by analyzing Markdown backlinks, extracting the context and comments, and generating a standalone, annotated PDF file with native PDF annotations.


💡 Use Cases

  1. Sharing Annotated Research Papers: Read and highlight papers using PDF++ while writing notes in your vault. Export a final PDF with native color highlights and popup comments to send to colleagues, peer reviewers, or professors.

  2. Document & Contract Review: Annotate contracts or draft documents in Markdown. Export the PDF with your comments as native PDF tooltips/annotations.


⚙️ Key Features

  • Standalone Operation: Generates annotations based on PDF++ links without requiring the PDF++ plugin to be enabled during export.
  • Smart Autocomplete: Modal with quick fuzzy-filtering of PDFs in your vault.
  • Support for All Annotation Types: Exports both text highlights (Highlight) and rectangular area selections (Square).
  • Sticky Notes: Option to generate floating sticky notes (Text annotations) with your comments alongside standard highlight popups for maximum compatibility across different PDF viewers (Preview, Edge, Acrobat).
  • Customizable Highlights:
    • Filter by annotation color or note types.
    • Adjustable opacity (Alpha) to prevent overly saturated highlight colors.
    • Option to embed comments inside the highlighted area, as floating sticky notes, or both.
    • Configurable link replacement text (defaults to [...]) to replace Markdown link tags within comment popups.
    • Option to configure a "Max Alias Length". Aliases shorter than this length will be preserved in the comment (useful for manually typed short aliases), while longer auto-generated aliases will be replaced. Set to 0 to always replace.
    • Option to clean up Markdown callouts (> [!info]) and list bullets (- , * ).
  • "Dummy PDF" Support: Complete compatibility with remote/external PDFs referenced via URL.

🖼️ Screenshots

  • Export Modal: Export Modal Placeholder
  • Markdown note containing links to other pdfs: Markdown note
  • Exported PDF in External Viewer: PDF Viewer Placeholder
  • Settings Panel: Settings Placeholder

🛠️ Technical Details & Implementation

1. The Comment Extraction Problem (Heuristics & Conventions)

The Problem:

Extracting a "comment" from a Markdown file to embed into a PDF popup annotation is an open-ended, ill-defined problem. PDF++ generates the Markdown wikilink pointing to a selection fragment (handling the visual overlay in Obsidian), but it dictates nothing about how users structure their comments around those links. Markdown grants total freedom.

The Current Solution (Convention-based Heuristics):

PDF++ Exporter resolves this by supporting two common note-taking conventions:

  1. Callout Quotes (> [!PDF|...]): PDF++ can automatically generate callouts containing a quote of the highlighted text followed by user comments.
    • The plugin extracts the body of the callout as the main comment popup content.
    • Text appended to the callout header (e.g., > [!PDF|2026-03-06 14:00]) is parsed as metadata (title/author/timestamp) for the PDF annotation popup header.
  2. Running Text / List Items: Links can be embedded directly within continuous paragraphs or list items (e.g., "- The finding in [[paper.pdf#page=1|this section]] is prohibitive.").
    • The exporter extracts the full paragraph or list item, stripping initial list markers (- , * ).
    • Because raw Markdown wikilinks look cluttered inside standard PDF popups, the plugin replaces the link reference with the user-defined replacement text (defaults to [...]).
    • If the wikilink contains a short alias manually typed by the user (e.g., [[paper.pdf#page=1|here]]), it can be preserved instead of the replacement text by configuring the "Max Alias Length" in settings.

Note: As community adoption grows, additional heuristics and user-defined comment extraction patterns will be supported.

2. The Coordinate Mapping Challenge

The Problem:

PDF++ does not store physical page coordinates ($X, Y$ bounding boxes) inside Markdown links. Instead, it encodes the text selection inside the URL fragment using line and character offsets relative to PDF.js's extracted text stream (e.g., #page=1&selection=10,2,12,5).

The Solution:

To draw native Highlight rectangles and QuadPoints using pdf-lib, PDF++ Exporter includes a custom geometry engine (PDFGeometry) reverse-engineered from PDF++:

  1. Loads the page text content using PDF.js (window.pdfjsLib).
  2. Maps character and line indices from the fragment to glyph containers and text rectangles returned by PDF.js.
  3. Converts and merges those rectangles into physical PDF coordinates (with bottom-left origin).
  4. Constructs native PDF dictionaries (PDFDict / /Subtype /Highlight / /QuadPoints / /Rect) and injects the annotations into the PDF pages using pdf-lib.

3. Handling "Dummy PDFs" (Remote PDFs)

The Problem:

PDF++ supports "Dummy PDFs": local .pdf files containing plain text pointing to an external URL (https://...). Trying to read or clone these files directly as binary PDF buffers causes corrupted PDF errors.

The Solution:

The exporter handles remote PDFs seamlessly through a 3-tier strategy:

  1. Header Detection: Checks the file header upon reading. If it does not start with %PDF- and contains an http(s):// URL, remote mode is activated.
  2. Disk Cache Check (PDF++ Fork Integration): Checks if the remote PDF was already cached locally by checking for its SHA-256 hash at .obsidian/plugins/pdf-plus/dummy-cache/HASH.pdf. If present, it loads directly from disk.
  3. In-Memory Fetching & Caching: If not cached on disk, fetches the PDF using Obsidian's CORS-bypassing requestUrl. The binary is cached in RAM (pdfBufferCache) during the export session to prevent duplicate network downloads.
  4. Detached Buffer Protection: Buffer clones (buffer.slice(0)) are passed to rendering engines, preventing memory detachment errors caused by PDF.js Web Workers.

📜 License

MIT License.

Similar Plugins

info
• Similar plugins are suggested based on the common tags between the plugins.
Kobo Highlights Importer
5 years ago by Flavio Cordari
Obsidian plugin to import highlights from a Kobo e-reader into your vault (no longer actively maintained)
Kindle Export
5 years ago by Simeon Stanek
A plugin which converts .md files from Obsidian to your Kindle/PocketBook
Extract PDF Annotations
5 years ago by Franz Achermann
This is a plugin for https://obsidian.md. It extracts Annotations from PDF Files.
Screwdriver
5 years ago by vorotamoroz
Obsidian Enhancing Export
4 years ago by YISH
This is an enhancing export plugin base on Pandoc for Obsidian (https://obsidian.md/ ). It's allow you to export to formats like Markdown、Markdown (Hugo https://gohugo.io/ )、Html、docx、Latex etc.
Advanced Codeblock
4 years ago by Lijyze
An obsidian plugin that give additional features to code blocks.
Timestamp Notes
4 years ago by Julian Grunauer
This plugin allows side-by-side notetaking with videos. Annotate your notes with timestamps to directly control the video and remember where each note comes from.
Share as Gist
4 years ago by timrogers
An Obsidian (https://obsidian.md/) plugin for sharing your notes as a GitHub gist - either privately or publicly.
Focus and Highlight
4 years ago by BO YI TSAI
A plugin for obsidian to focus and highlight on a specific heading in Reading mode.
Raindrop Highlights
4 years ago by kaiiiz
An Obsidian.md plugin that syncs highlights from Raindrop.
Simple Mention
4 years ago by der-tobi
Obsidian plugin for mentioning people
Readavocado Sync
4 years ago by Cyrus Zhang
Readavocado obsidian plugin to sync your favorite highlights.
Obsidian markdown export
4 years ago by bingryan
This plugin allows to export directory/single markdown to a folder. support output format(html/markdown/text)
Text Extractor
4 years ago by Simon Cambier
A (companion) plugin to facilitate the extraction of text from images (OCR) and PDFs.
Webpage HTML Export
4 years ago by Nathan George
Export html from single files, canvas pages, or whole vaults. Direct access to the exported HTML files allows you to publish your digital garden anywhere. Focuses on flexibility, features, and style parity.
Quote Share
4 years ago by DuocNV
Generate beautifull image from Obsidian.
Awesome Reader
4 years ago by AwesomeDog
Make Obsidian a proper Reader.
Apple Books Highlights
4 years ago by Atif Afzal
Sync your Apple Books highlights in Obsidian
ibook
4 years ago by bingryan
export mac ibook annotations/hightlights to obsidian vault
Floating Highlights
4 years ago by Karthik S Raju
This is a plugin for obsidian which highlights a block of text or a word as you scroll down while reading.
WuCai highlights Official
4 years ago by 希果壳五彩
WuCai highlights Official, for Sync highlights into your obsidian notes
Pocketbook Cloud Highlight Importer
3 years ago by Lena Brüder
Imports highlights and notes from books stored in the pocketbook cloud to your obsidian vault
Slide Note
3 years ago by Jinyan Xu
Interlinear Glossing
3 years ago by Mijyuoon
An Obsidian plugin for interlinear glosses used in linguistics texts.
HamsterBase Official
3 years ago by HamsterBase
Html Server
3 years ago by Pr0dt0s
Obsidian plugin to serve a vault as an html site.
Cloze
3 years ago by Vikki
A plugin for Obsidian which enables converting highlights, underlines, bolded texts, or any selected texts into clozes.
Pickly PageBlend
3 years ago by Dmitrii Mitrichev
The easiest way to share your Obsidian notes
Vocabulary Highlighter
3 years ago by eatgrass
Highlight English words according to the frequency with Obsidian
Vim Yank Highlight
3 years ago by Aleksey Rowan
Highlight yanked text in Vim mode. Enjoy that subtle animation you've missed so much.
Highlight Helper
3 years ago by Chongmyung Park
Helper to collect highlight in Obsidian
Strip Internal Links
3 years ago by Adi Ron
A simple Obsidian plugin to strip internal links from files
Apple Books - Import Highlights
3 years ago by bandantonio
⚡️Fastest Apple Books highlights importer to Obsidian 🗄️ The only one protecting your own reflections across imports 🎨 Fully customizable
Image Magician
3 years ago by luxmargos
This is a plugin for Obsidian (https://obsidian.md). Supports viewing and exporting various image formats using ImageMagick.
PDF break page
3 years ago by CG
Plugin for obsidian that adding shortcuts to create breakpages for pdf exports.
Enhanced Annotations
3 years ago by ycnmhd
Gitlab Wiki Exporter
3 years ago by Josef Rabmer
BookFusion
3 years ago by BookFusion
BookFusion Obsidian Plugin
SwiftLaTeX Render
3 years ago by gboyd068
Static Site MD Exporter
3 years ago by Yunfi
Export specific notes to general md for static site generation, such as Hexo, Hugo, or Astro
Strapi Exporter AI
3 years ago by Cinquin Andy
[prod] - 🚀 Strapi Exporter: Supercharge Your Obsidian-to-Strapi Workflow, export an obsidian notes directly to your Strapi API
my anime list text exporter
3 years ago by XmoncocoX
a plugin who create an obsidian page for an anime with the data from my anime list.
Stashpad Docs
2 years ago by Stashpad
The Stashpad Docs plugin for Obsidian.
Note Definitions
2 years ago by Dominic Let
Obsidian plugin for seamless viewing of personal definitions
Infostacker Note Publish
2 years ago by Taskscape LTD, Patryk Nowak, Kacper Pabianiak
Infostacker plugin for Obisidian
Plugins Annotations
2 years ago by Andrea Alberti
Obsidian plugin that allows adding personal comments to each installed plugin.
Multiplatform Highlights Importer
2 years ago by wwwkieran
Import and consolidate highlights from different reading sources. Supports reconciling books across reading sources.
Marker PDF to MD
2 years ago by L3N0X
Make use of different AI models to convert your pdfs into markdown with perfect ocr, latex formulas, tables, images and more! Supports Mistral AI OCR (free) and self hosted variants!
Extract Highlights
6 years ago by Alexis Rondeau
Manage your highlights in Obsidian by easily creating, removing and exporting them.
Export To TeX
6 years ago by Zach Raines
export obsidian markdown files in a format that can be pasted into a TeX file
PDF Highlights
6 years ago by Alexis Rondeau
Extract highlights, underlines and annotations from your PDFs into Obsidian
Better PDF
6 years ago by MSzturc
Goal of this Plugin in to implement a native PDF handling workflow in Obsidian
Highlight Public Notes
6 years ago by dennis seidel
Readwise Community
6 years ago by renehernandez
Sync Readwise highlights into your obsidian vault
Excalidraw
6 years ago by Zsolt Viczian
A plugin to edit and view Excalidraw drawings in Obsidian
Kindle Highlights
4 years ago by Hady Osman
Sync your Kindle notes and highlights directly into your Obsidian vault
Pandoc
5 years ago by Oliver Balfour
Pandoc document export plugin for Obsidian (https://obsidian.md)
Annotator
5 years ago by Elias Sundqvist
A plugin for reading and annotating PDFs and EPUBs in obsidian.
Markmind
5 years ago by Mark
A mind map, outline for obsidian,It support mobile and desktop
Metadata Extractor
5 years ago by kometenstaub
Obsidian Plugin that provides metadata export for use with third-party apps.
LLM Summary
2 years ago by QSun
wip
Quarto Exporter
2 years ago by Andreas Varotsis
Export Obsidian notes to Quarto-compatible QMD files.
downloadPDF
2 years ago by Frieda
PDF2Image
2 years ago by RasmusAChr
Quick Share Note to gist
2 years ago by Por Chainarong Tangsurakit
"Quick Share Note to gist" is an Obsidian plugin that lets you publish notes to GitHub gist and upload images to Imgur.
Latex Exporter
2 years ago by Matthew S. Scott
Obsidian plugin: export a graph of linked notes to a full LaTeX paper, with embeds, citations, theorem environments and cross-references.
KoReader Highlight Importer
2 years ago by Tahsin Kocaman
Imports highlights and metadata from KoReader into Obsidian notes
Publish to Discourse
2 years ago by woodchen
Obsidian plugin for publishing articles to forums built with Discourse. obsidian插件, 用于把文章发布到使用discourse搭建的论坛.
ShaahMaat-md
2 years ago by Mihail Kovachev
Paperless
2 years ago by Talal Abou Haiba
BibDesk Integration
2 years ago by Andrea Alberti
Integration of Obsidian with bibtex files
WhatsApp export note
2 years ago by JoaoEmanuell
Obsidian plugin to export notes for whatsapp
Readeck Importer
2 years ago by Makebit
Import bookmarks from Readeck to Obsidian
Feedly Annotations Sync
2 years ago by Nick Felker
Download my Feedly annotations
PDF Writer
2 years ago by Jobelin Kom
Obsidian plugin To write and fill a PDF
PDF Paste
2 years ago by Cormac
Export Graph View
2 years ago by Sean McGhee
Plugin to export your vault's graph view.
Media Slider
2 years ago by Aditya Amatya
An obsidian plugin that helps to make slider for images, audios, videos, pdfs, markdown, etc in obsidian notes.
Copy Local Graph Paths
2 years ago by Amy Z
copy-local-graph-paths is a simple Obsidian plugin that copies the paths of notes linked to your current page.
InfoFlow
2 years ago by RockieStar Inc.
Obsidian plugin for InfoFlow.app - This plugin integrates InfoFlow with Obsidian, allowing you to sync your saved articles, web pages, notes, and highlights directly into your Obsidian vault.
Annotate Audio
2 years ago by VidE
PDF Folder to Markdowns
2 years ago by CrisHood
Convert a folder of PDFs into a folder of Markdown files with embedded PDFs. This plugin is useful for users who want to migrate their PDF notes from different apps (e.g., Boox) or organize their reference materials inside Obsidian.
HiNote
2 years ago by Kai
Add comments to highlighted notes, use AI for thinking, and flashcards for memory.
Cubox
2 years ago by delphi-2015
Cubox Official Obsidian Plugin
aDHL
a year ago by tine-schreibt
The Dynamic Highlights Plugin, but with hotkeys, more options and sorting; works well with Highlightr.
MatchSyntax
a year ago by Eda
An Obsidian plugin that lets you write "regex-like" syntax to search the contents of a note, including part-of-speech tagging and (limited) fuzzy matching.
TODO Highlighter
a year ago by Nuraly Dyussenov
Obsidian Plugin that formats the exact string TODO, so it can be easily seen in your notes.
Kindle Highlights Import
a year ago by Leon Luttenberger
Plugin for Obsidian that allows users to import Kindle highlights into their Obsidian vault.
Yandex Wiki Integration
a year ago by Pavel Sokolov
Sidebar Highlights
a year ago by trevware
Linked Note Exporter
a year ago by the-c0d3r
Obsidian plugin to export a note along with all its attachments and linked notes—cleanly, conveniently, and ready to share.
Handwriting OCR
a year ago by ikmolbo
Transform handwritten documents and scanned images into editable text with Handwriting OCR's AI-powered handwriting to text conversion.
HTTP Link Maker
a year ago by Kenneth Christensen
Create HTTP links for Obsidian notes that work on all your devices
SideNote
a year ago by mofukuru
Obsidian plugin: Add comment on the part of sentence and refer in comment view.
Nixsync
6 months ago by rowmayne
Obsidian plugin to export and import settings as Nix.
Math+
5 months ago by ocapraro
This is an Obsidian plugin for taking math notes using Excalidraw.
PDF++
5 months ago by ryotaushio
PDF++: the most Obsidian-native PDF annotation & viewing tool ever. Comes with optional Vim keybindings.
Image Converter
3 months ago by xryul
⚡️ Convert, compress, resize, annotate, markup, draw, crop, rotate, flip, align images directly in Obsidian. Drag-resize, rename with variables, batch process. WEBP, JPG, PNG, HEIC, TIF.
Convert to Markdown
3 months ago by notenerd
Convert PDF, Word, PowerPoint, Excel, and image files in your vault into Markdown notes with images and dropped assets listed alongside the output. Process everything fully offline on your machine — no cloud, service, external binary, or API key required; documents parse deterministically while images use local OCR with confidence reporting.
HandLayers
2 months ago by [email protected]
PDF to Markdown Native
2 months ago by Andres Herle Lang
Book Reader
2 months ago by EltonLabs
Read EPUB, FB2 and PDF books directly inside Obsidian — a beautiful, distraction-free book reader with text highlighting, notes, and reading progress that syncs into your vault. Works on both desktop and mobile (Windows, macOS, Linux, Android, iOS).
Live Share
2 months ago by mewski
Real-time collaborative editing for Obsidian.
ICOR for Life - PDF Annotation
2 months ago by Thomas Roedl
Highlight text or draw a box on a PDF and get a note in the vault for it, with a deep link back, a card on any canvas by drag and drop, and a sidebar of every highlight in the open PDF. Part of the ICOR for Life suite.
FleurEPUB
2 months ago by JC5
Qiaomu Reader
2 months ago by 向阳乔木
已上架 Obsidian 社区插件市场:搜索 Qiaomu Reader 安装。Read EPUB, PDF and MOBI, highlight passages, keep linked notes and ask optional AI.
List Callouts Improved
2 months ago by Daniel Yim
Create callouts in lists in Obsidian.
Third Mind Reader
2 months ago by Rohan Bell
An opinionated EPUB & PDF reader for Obsidian. Read, annotate, and chat with your books. Every highlight stays in your vault as plain markdown, linked back to where it came from. Desktop and mobile, AI optional.
Pick Me
a month ago by seanishoo
Annotate and ask questions about what you select — in notes and in PDFs — without leaving the page. Annotations live in their own Markdown files; the original document is never modified.
yh-InkLight
a month ago by angelwdx
Binders
a month ago by Caleb Smith
Long-form writing in Obsidian: ordered folders, a corkboard, an outliner, an editable manuscript, snapshots, and export to Word, EPUB, and Scrivener. Plain Markdown. Public beta.
AIditor
14 days ago by Mario Miletta
Grid Note
12 days ago by dcx199302
将Markdown文档转换成结构化的卡片布局,让卡片和结构更加清晰