Vai al contenuto

Document

Un Document racchiude un PDF. Si ottiene tramite imposio.open(), imposio.newDocument(), imposio.activeDocument(), o tramite operazioni che producono un nuovo documento (generateImposition(), splitPages(), copyPages()).

Tutti gli indici di pagina sono base 0. Gli intervalli sono stringhe: "all", "1-5", "odd", "even", "2,4,7" (vuoto = tutte). Le lunghezze sono nell'unità corrente, salvo che siano fornite come stringa con suffisso.

Informazioni

Metodo Restituisce Descrizione
isValid() bool Se il documento è stato caricato correttamente.
pageCount() int Numero di pagine.
filePath() string Percorso sorgente (vuoto per nuovi documenti).
title() string Il titolo impostato da script.
setTitle(title) Imposta il titolo della scheda usato da show() / save().

Box e dimensioni delle pagine

Ognuna restituisce un oggetto nell'unità corrente (coordinate PDF, Y verso l'alto). pageSize restituisce {w, h}; i getter di box restituiscono {x, y, w, h}.

Metodo Restituisce
pageSize(pageIndex) {w, h}
mediaBox(pageIndex) {x, y, w, h}
cropBox(pageIndex) {x, y, w, h}
trimBox(pageIndex) {x, y, w, h}
bleedBox(pageIndex) {x, y, w, h}

Ispezione delle pagine (sola lettura)

Metodo Restituisce
pageObjects(pageIndex) Oggetti del content stream (ricorsivo nei Form XObject): [{ indexPath:[…], type:"text\|path\|image\|shading\|form\|unknown", bbox:{x,y,w,h} }]
annotations(pageIndex) [{ subtype:int, type:"Link\|Text\|Widget\|…", summary, bbox:{x,y,w,h} }]
resources(pageIndex) [{ kind:"font\|image\|form", name, primary, secondary, warning:bool }]
structTree(pageIndex) Struttura tagged PDF (vuota se non taggata): [{ type, title, altText, actualText, children:[…] }]

Operazioni sulle pagine

Modificano il documento in-place (salvo diversa indicazione).

resizePages(range, width, height, opts?)

Ridimensiona le pagine. Le box trim/bleed/crop e il contenuto di abbondanza vengono preservati.

Chiave opts Valori Predefinito
placement "fit", "fill", "stretch", "keep" "fit"

deletePages(range)

Elimina le pagine nell'intervallo range.

rotatePages(range, degrees, opts?)

Ruota le pagine. degrees è assoluto (0/90/180/270); con opts.increment = true viene aggiunto alla rotazione corrente.

duplicatePages(range, opts?)

Duplica le pagine. opts.mode: "after" (predefinito — una copia dopo ognuna), "block", "append".

reversePages(range?, opts?)

Inverte l'ordine delle pagine. opts.mode: "inplace" (predefinito) o "compact".

movePages(range, destIndex)

Sposta le pagine di range prima dell'indice destIndex (base 0, nello spazio delle pagine originali).

setPageBoxes(range, boxes)

Imposta le box come rientranze dalla MediaBox (unità corrente). boxes: { bleed, trim, crop }.

addBlankPage(at, width, height)

Inserisce una pagina bianca (dimensioni nell'unità corrente) all'indice at (-1 = fine).

addPagesFromFile(path, opts?)

Inserisce pagine da un PDF o un'immagine (PNG/JPEG/BMP/GIF/TIFF/WebP → una pagina).

Chiave opts Descrizione
range Pagine della sorgente (solo PDF).
at Indice di inserimento (-1 = fine).

replacePages(targetRange, source, opts?)

Elimina targetRange e inserisce al suo posto le pagine di source (PDF o immagine). opts.range seleziona le pagine sorgente (predefinito tutte; ignorato per le immagini).

splitPages(cols, rows, opts?) → Document

Suddivide ogni pagina in una griglia cols × rows. Restituisce un nuovo Document.

Chiave opts Valori
area "media", "trim", "bleed", "crop"
range pagine da suddividere

rasterizePages(range?, dpiOrOpts?)

Sostituisce le pagine con la loro versione rasterizzata (renderizzata, appiattita su bianco — senza trasparenza). In-place. Il secondo argomento è un numero di DPI (legacy) o un oggetto:

Chiave opts Valori Predefinito
dpi number 300
cmyk bool false (RGB)
intent "perceptual", "relative", "saturation", "absolute" (o 03)
iccProfile percorso .icc GRACoL incorporato

generateBleed(range?, opts?)

Costruisce una cornice di abbondanza attorno alle pagine dal bordo stesso della grafica (GUI Genera abbondanza). La pagina cresce di size su ogni bordo; la box di rifilo viene impostata sulla pagina originale e la box di abbondanza sul nuovo bordo, così l'imposizione rifila correttamente. Viene rasterizzata solo la cornice aggiunta — la pagina resta vettoriale. Le pagine che hanno già l'abbondanza vengono saltate. Restituisce il numero di pagine modificate.

Chiave opts Valori Default
size lunghezza — larghezza dell'abbondanza
source lunghezza — larghezza della striscia sorgente (più stretta di size = stirata)
method "mirror", "extend", "replicate", "solid"
dpi DPI raster della cornice 300
blur ammorbidire la cornice false
force elaborare anche le pagine che hanno già l'abbondanza false

copyPages(range?, opts?) → Documento

Copia le pagine in un nuovo documento (come GUI Copy → New). Restituisce il nuovo Documento o null. opts.bakeLayer: false esclude il livello di modifica Imposio dalla copia (grafica PDF pulita).

Modifiche al contenuto della pagina

Modificare o rimuovere oggetti del content stream della pagina (la grafica stessa, non il livello di modifica). indexPath proviene da pageObjects() — ad es. [3], o [3, 2] per un figlio dentro un Form XObject. Tutte le modifiche preservano il layout: il resto della pagina resta identico byte per byte (niente allineamenti di testo saltati).

Metodo Descrizione
setPageObjectText(page, indexPath, newText, opts?) Cambia il testo di un oggetto testo. opts { x, y, w, h } lo sposta/ridimensiona nello stesso passo.
setPageObjectBounds(page, indexPath, x, y, w, h) Sposta/ridimensiona un oggetto (unità corrente, Y verso l'alto).
setPageObjectOpacity(page, indexPath, opacity) Opacità non distruttiva 01 (0 = nascosto).
duplicateObject(page, indexPath, opts?) Duplicato vettoriale come forma mobile del livello di modifica; opts { dx, dy } offset. Restituisce l'ID della nuova forma.

smartDeleteObjects(pageIndex, indexPaths, opts?)

Elimina gli oggetti corrispondenti agli oggetti modello su molte pagine (GUI Smart Delete) — ad es. una filigrana o un'intestazione ripetuta ovunque. pageIndex + indexPaths (un indexPath o un array) individuano gli oggetti modello. Restituisce il numero di oggetti eliminati, -1 in caso di errore.

Chiave opts Valori Default
mode "identical" (stesso oggetto) o "position" (qualunque cosa si trovi lì) "identical"
range pagine da elaborare "all"
tolerance tolleranza di corrispondenza (unità corrente) 0,5 pt
verify ri-renderizzare ogni pagina modificata e saltarla se è cambiato qualcos'altro true

Campi modulo

Leggere e compilare i campi PDF interattivi (AcroForm). I valori vengono scritti nel modulo e restano modificabili; usa flattenForms per fissarli in modo permanente nel contenuto della pagina.

formFields()

Restituisce i campi interattivi del documento. Ogni voce:

Chiave Descrizione
name Nome completo del campo — la chiave per setFormField.
label Etichetta leggibile (/TU, ripiego su name).
type "text", "checkbox", "radio", "choice", "pushbutton", "signature".
value Valore corrente (valore testo/choice; nome dello stato attivo per i pulsanti).
checked true/false per caselle di controllo e pulsanti di opzione.
choices Opzioni per i campi choice (e nomi di stato attivo per i pulsanti di opzione).
readOnly Bloccato dall'autore del modulo.
multiline Il campo di testo consente le interruzioni di riga.

setFormField(name, value)

Imposta il valore di un campo. value è una stringa per i campi testo e choice, un booleano (o "on"/"off") per le caselle di controllo e il nome dello stato attivo per i pulsanti di opzione. Il contrassegno di sola lettura viene ignorato — il valore viene sovrascritto. Restituisce true se applicato.

setFormFields(values)

Imposta più campi in una volta da un oggetto { name: value, … } (un passaggio per origine; i nomi sconosciuti vengono ignorati).

var d = imposio.open("invoice-template.pdf");
d.setFormFields({
  customer: "ACME Ltd",
  agree:    true,        // checkbox
  color:    "/green",    // radio on-state
  city:     "Kosice"     // choice
});
d.save("invoice-filled.pdf");

flattenForms(range?)

Fissa i valori dei campi modulo (e le annotazioni) nel contenuto della pagina perché sopravvivano a ridimensionamento, suddivisione e imposizione. Sul posto; range predefinito "all".

Dati variabili

mergeData(table, opts)

Unisce i record di dati al documento (GUI Dati variabili → Genera): per ogni record le pagine di origine vengono copiate e gli elementi mappati espansi — i modelli di testo/testo in cornice sostituiscono il testo, i modelli immagine si espandono in un percorso di file, i modelli casella decidono la spunta (1/yes/true spunta, vuoto/0/no toglie). Segnaposto: {colonna}, {i:03}, {=espressione}, {{ = letterale.

table è l'oggetto di imposio.loadData (o { columns: […], rows: [[…]] } costruito nello script); null = merge con soli contatori.

Chiave opts Descrizione
mapping Obbligatorio. [{ page: 0, shape: id, template: "{nome}" }]. Le mappature immagine accettano anche fit: "fit"\|"fill"\|"stretch"\|"keep" e align: "top-left"…"center"…"bottom-right" (o 08).
mode "new" (default), "append", "fill".
sourcePages Intervallo 1-based; default = le pagine usate in mapping.
records "all", "1-100", …
targets Solo "fill": pagine che ricevono gli elementi (default = pagine dopo il blocco sorgente).
replace Solo "fill": true sostituisce gli elementi delle pagine di destinazione, false aggiunge sopra.
counters [{ name: "i", start: 0, step: 1, max: 100 }]max facoltativo; con max il merge funziona anche senza tabella.
imageBaseDir Cartella base per i percorsi immagine relativi.
hidden [{ page: 0, shape: id }] — Visibilità: voci escluse dall'output.
pdfContent false esclude il contenuto PDF sottostante delle pagine di origine (elementi su pagine vuote; new/append). Default true.

Restituisce un nuovo Documento per "new", il numero di record uniti per "append"/"fill". Lancia un'eccezione in caso di errore (il documento resta invariato).

var data = imposio.loadData("guests.csv");
var doc  = imposio.activeDocument();
var out  = doc.mergeData(data, {
  mapping: [{ page: 0, shape: 3, template: "{firstname} {lastname}" }],
  counters: [{ name: "i", start: 1 }],
});
out.save("badges.pdf");

Esportazione, salvataggio e rendering

exportImage(path, opts?)

Renderizza le pagine in file immagine. path è una cartella o un file (dedotto).

Chiave opts Valori Predefinito
format "tiff", "png", "jpeg", "webp"
dpi number
quality number (JPEG/WebP)
box "media", "trim", "bleed", "crop"
range pagine tutte
pattern pattern di nome, es. "{p}" ({p} = n° pagina PDF, {n} = contatore output)
multipageTiff bool — un TIFF per l'intero lavoro

save(path, opts?)

Salva in PDF. Restituisce un bool. opts.autoIndex = true aggiunge _1, _2, … se il file di destinazione esiste già (predefinito false = sovrascrive).

renderPng(pageIndex, dpi, outPath, opts?)

Renderizza una singola pagina in PNG. opts.background: "#rrggbb" o "none"/"transparent" (predefinito bianco).

Metadati e sicurezza

Le modifiche vengono scritte nel PDF al save() (modello dirty); entrambe sono aggiornamenti parziali.

metadata() / setMetadata(m)

metadata() restituisce { title, author, subject, keywords, creator, producer, created, modified } (created/modified in sola lettura). setMetadata({ title?, author?, subject?, keywords?, creator?, producer? }).

security() / setSecurity(s)

security() restituisce { encrypt, algorithm, userPassword, ownerPassword, allowPrint, allowHighResPrint, allowCopy, allowModify, allowAnnotate, allowForms, allowExtract, allowAssembly, wasEncrypted }.

setSecurity({ encrypt?, userPassword?, ownerPassword?, algorithm?, allow…? })encrypt: false rimuove la sicurezza al salvataggio. algorithm: "rc4-128", "aes-128", "aes-256".

Visualizzazione

show(title?)

Apre questo documento come nuova scheda nell'app (GUI Run). No-op in modalità headless/CLI.