PdfCanvas
EN

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

OpzioneDefaultScopo
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
initialZoom1Numero, fit-width o fit-page
minZoom / maxZoom0.15 / 5Limiti di zoom
historyLimit60Passi di undo in memoria
maxFileSize200 MBDimensione massima accettata
accent#6b4effColore 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.

Pagine correlate