vikcraft-pdf-editor
v2.1.0
Published
A full-featured browser PDF annotation and editing library built on PDF.js and Fabric.js. Supports drawing, text boxes, stamps, measurements, AI-powered issue detection, undo/redo, and export to annotated PDF.
Maintainers
Readme
vikcraft-pdf-editor
A full-featured browser PDF annotation and editing library — built on PDF.js and Fabric.js.
Features
- Render and paginate PDF documents (via PDF.js)
- Annotation tools: Pen/freehand, Rectangle, Ellipse, Arrow, Line, Text Box, Stamp, Comment Pin, Cloud, Measurement
- Category tagging & comment sidebar with search/filter
- Undo / redo (50-step stack)
- Export annotations to annotated PDF (all marks baked in at correct positions)
- Zoom in/out with annotation canvas alignment
- AI-powered features:
- 💡 Page hints bar (auto-scans on load)
- 🔍 Find missing engineering issues
- 🎯 Review annotation quality
- 🤖 Per-annotation AI review
- Right-click context menu with AI review option
- 6 built-in themes
Install
npm install vikcraft-pdf-editorPeer dependencies (CDN-loaded by default, or install manually)
npm install pdfjs-dist fabric jspdfQuick Start
Via <script> tag (browser)
<link rel="stylesheet" href="node_modules/vikcraft-pdf-editor/VikCraftPDFEditor.css">
<!-- Peer dependencies (CDN) -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.4.120/pdf.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/5.3.1/fabric.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
<div id="my-pdf-editor" style="width:100%;height:90vh;"></div>
<script type="module">
import VikCraftPDFEditor from 'node_modules/vikcraft-pdf-editor/VikCraftPDFEditor.js';
const editor = new VikCraftPDFEditor('my-pdf-editor', {
pdfUrl: './document.pdf',
pdfjsLib: window.pdfjsLib,
fabric: window.fabric,
jsPDF: window.jspdf?.jsPDF,
mode: 'edit', // 'edit' | 'view'
currentUser: 'Engineer',
// ai: { apiKey: 'sk-ant-...' }, // enable AI features
});
</script>Via bundler (Vite / Webpack)
import VikCraftPDFEditor from 'vikcraft-pdf-editor';
import 'vikcraft-pdf-editor/VikCraftPDFEditor.css';
import * as pdfjsLib from 'pdfjs-dist';
import * as fabric from 'fabric';
import { jsPDF } from 'jspdf';
const editor = new VikCraftPDFEditor('my-pdf-editor', {
pdfUrl: './document.pdf',
pdfjsLib, fabric, jsPDF,
});Configuration Options
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| pdfUrl | string | — | URL or path to the PDF file |
| pdfjsLib | object | — | Required. PDF.js library object |
| fabric | object | — | Required. Fabric.js library object |
| jsPDF | class | — | Required. jsPDF constructor |
| mode | string | 'edit' | 'edit' or 'view' |
| currentUser | string | 'User' | Username shown on annotation cards |
| ai | object | null | { apiKey: 'sk-ant-...' } to enable AI features |
API
editor.loadPdf(url) // Load a new PDF
editor.downloadAnnotatedPdf() // Export PDF with annotations baked in
editor.getAnnotations() // → array of all annotation objects
editor.setAnnotations(array) // Restore saved annotations
editor.setMode('view') // Switch between 'edit' and 'view'
editor.getCurrentMode() // → 'edit' | 'view'
editor.on('annotationAdded', fn) // Event listener
editor.destroy() // Clean upCDN
<link rel="stylesheet" href="https://unpkg.com/vikcraft-pdf-editor/VikCraftPDFEditor.css">
<script type="module">
import VikCraftPDFEditor from 'https://unpkg.com/vikcraft-pdf-editor/VikCraftPDFEditor.js';
</script>License
MIT © VikCraft Pro
