Highlights, sticky notes, freehand drawing, shapes, signatures, and flattened export — a headless, fully-typed React toolkit on top of PDF.js. Every byte stays in the browser.
Text highlights, draggable sticky notes, freehand ink, rectangles & arrows, images and hand-drawn signatures — each a first-class annotation with stable id, color and comment.
Burn every annotation permanently into a downloadable PDF — with a per-page progress callback.
100% client-side. Documents never touch a server — built for legal, medical and internal files.
Positions stored in viewport-independent coordinates — pinned through every zoom level.
Full TypeScript definitions. Extend the Highlight interface with your own custom fields.
Bring your own UI. A small tree of primitives you wire together however you like.
Loader fetches the document. Highlighter wires the events. Your container renders each annotation. Context hooks expose everything else.
// install · import "react-pdf-highlighter-plus/style.css" import { PdfLoader, PdfHighlighter, TextHighlight, AreaHighlight, } from "react-pdf-highlighter-plus"; <PdfLoader document={url}> {(pdf) => ( <PdfHighlighter pdfDocument={pdf} enableAreaSelection={(e) => e.altKey}> <HighlightContainer /> </PdfHighlighter> )} </PdfLoader>
In-document search via the new highlighter search utilities, plus copy-text in highlight toolbars.
Outline & page thumbnails on the left, highlights on the right, with theme-aware page inversion.
Highlights, areas, notes, images, signatures, drawing, shapes, export & localStorage.
Upload your own document or use our sample. Annotate, then export a flattened copy — all in the browser.