API core
Il motore espone una superficie piccola: carica un documento, posiziona oggetti, gestisci pagine, annulla ed esporta. Tutto è sincrono tranne caricamento, inserimento immagini ed export.
Apri l'editor PDFUltimo aggiornamento:
Opzioni del costruttore
| Opzione | Default | Scopo |
|---|---|---|
| workerSrc | — (richiesto) | URL del worker PDF.js |
| cMapUrl | — | Cartella CMaps |
| standardFontDataUrl | — | Cartella font standard |
| wasmUrl | — | Decoder WASM di PDF.js |
| pdfiumWasmUrl | — | Abilita la modifica del testo originale |
| fontAssetsUrl | — | Font di fallback inclusi |
| initialZoom | 1 | Numero, fit-width o fit-page |
| minZoom / maxZoom | 0.15 / 5 | Limiti di zoom |
| historyLimit | 60 | Passi di undo in memoria |
| maxFileSize | 200 MB | Dimensione massima accettata |
| accent | #6b4eff | Colore della selezione |
| onError | — | Hook per errori non fatali |
Carica, esporta, ispeziona
await pdf.load(source, { fileName: "contratto.pdf" });
const bytes = await pdf.exportPdf({ fileName: "contratto.pdf" });
await pdf.download();
pdf.getState(); // snapshot serializzabile
pdf.getPages(); // id, index, width, height, rotation, objectCount
await pdf.getThumbnails(140);Oggetti
pdf.addText(80, 120, { text: "Ciao", fontSize: 24, color: "#6b4eff" });
await pdf.addImage(dataUrl, { x: 40, y: 40, width: 200 });
await pdf.addImageFile(file);
await pdf.addSignature(pngDataUrl);
pdf.addShape("rect", { x: 80, y: 180, width: 200, height: 90 });
pdf.updateSelected({ color: "#ff5b4a", fontSize: 28 });
pdf.duplicateSelected();
pdf.deleteSelected();
pdf.bringForward();Pagine e cronologia
await pdf.addBlankPage(2);
pdf.duplicatePage(0);
pdf.deletePage(1);
pdf.rotatePage(0, 90);
pdf.movePage(3, 0);
pdf.goToPage(2);
pdf.undo();
pdf.redo();Testo originale e strumenti
pdf.setTool("text-edit");
pdf.on("originaledit", ({ edit }) => {
if (edit) pdf.updateOriginalText({ boldOverride: true });
});
pdf.setZoom(1.25);
pdf.fitWidth();
pdf.fitPage();Strumenti: select, text, text-edit, image, rect, ellipse, line, pen, highlight, whiteout. Il bianco copre visivamente, non è redazione.
Domande frequenti
+L'API è stabile?
Il pacchetto è alla 0.8.x. Il modello è usabile, ma le versioni minor possono ancora cambiare le firme dei metodi. Fissa una versione esatta in produzione.
+Come salvo il lavoro?
getState() restituisce uno snapshot serializzabile. L'entry editor aggiunge sopra l'autosalvataggio in IndexedDB.
+Posso ascoltare i cambi di selezione?
Sì, tramite l'event emitter: eventi di selezione, pagina, zoom e modifica del testo originale. Controlla i tipi inclusi nel pacchetto per i payload esatti.