Aller au contenu

Document

Un Document enveloppe un PDF. Vous l'obtenez via imposio.open(), imposio.newDocument(), imposio.activeDocument(), ou via les opérations qui produisent un nouveau document (generateImposition(), splitPages(), copyPages()).

Tous les index de page sont base 0. Les plages sont des chaînes : "all", "1-5", "odd", "even", "2,4,7" (vide = toutes). Les longueurs sont dans l'unité courante, sauf si données en chaîne suffixée.

Informations

Méthode Renvoie Description
isValid() bool Si le document s'est chargé correctement.
pageCount() int Nombre de pages.
filePath() string Chemin source (vide pour les nouveaux documents).
title() string Le titre défini par script.
setTitle(title) Définit le titre d'onglet utilisé par show() / save().

Boxes et tailles de pages

Chacune renvoie un objet dans l'unité courante (coordonnées PDF, Y vers le haut). pageSize renvoie {w, h} ; les getters de box renvoient {x, y, w, h}.

Méthode Renvoie
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}

Inspection de page (lecture seule)

Méthode Renvoie
pageObjects(pageIndex) Objets du content stream (récursif dans les Form XObjects) : [{ 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) Structure tagged PDF (vide si non tagué) : [{ type, title, altText, actualText, children:[…] }]

Opérations sur les pages

Elles modifient le document en place (sauf mention contraire).

resizePages(range, width, height, opts?)

Redimensionne les pages. Les boxes trim/bleed/crop et le contenu de fond perdu sont préservés.

Clé opts Valeurs Défaut
placement "fit", "fill", "stretch", "keep" "fit"

deletePages(range)

Supprime les pages de range.

rotatePages(range, degrees, opts?)

Tourne les pages. degrees est absolu (0/90/180/270) ; avec opts.increment = true il s'ajoute à la rotation courante.

duplicatePages(range, opts?)

Duplique les pages. opts.mode : "after" (défaut — une copie après chacune), "block", "append".

reversePages(range?, opts?)

Inverse l'ordre des pages. opts.mode : "inplace" (défaut) ou "compact".

movePages(range, destIndex)

Déplace les pages de range avant l'index destIndex (base 0, dans l'espace de pages d'origine).

setPageBoxes(range, boxes)

Définit les boxes comme retraits depuis la MediaBox (unité courante). boxes : { bleed, trim, crop }.

addBlankPage(at, width, height)

Insère une page blanche (dimensions dans l'unité courante) à l'index at (-1 = fin).

addPagesFromFile(path, opts?)

Insère des pages depuis un PDF ou une image (PNG/JPEG/BMP/GIF/TIFF/WebP → une page).

Clé opts Description
range Pages de la source (PDF uniquement).
at Index d'insertion (-1 = fin).

replacePages(targetRange, source, opts?)

Supprime targetRange et insère à cet endroit des pages de source (PDF ou image). opts.range sélectionne les pages source (défaut toutes ; ignoré pour les images).

splitPages(cols, rows, opts?) → Document

Découpe chaque page en grille cols × rows. Renvoie un nouveau Document.

Clé opts Valeurs
area "media", "trim", "bleed", "crop"
range pages à découper

rasterizePages(range?, dpiOrOpts?)

Remplace les pages par leur version rasterisée (rendue, aplatie sur blanc — sans transparence). En place. Le second argument est un nombre de DPI (legacy) ou un objet :

Clé opts Valeurs Défaut
dpi number 300
cmyk bool false (RGB)
intent "perceptual", "relative", "saturation", "absolute" (ou 03)
iccProfile chemin .icc GRACoL embarqué

generateBleed(range?, opts?)

Construit un cadre de fond perdu autour des pages à partir du bord même de la maquette (GUI Générer le fond perdu). La page grandit de size sur chaque bord ; la boîte de rognage est définie sur la page d'origine et la boîte de fond perdu sur le nouveau bord, de sorte que l'imposition rogne correctement. Seul le cadre ajouté est rastérisé — la page reste vectorielle. Les pages qui ont déjà un fond perdu sont ignorées. Retourne le nombre de pages modifiées.

Clé opts Valeurs Défaut
size longueur — largeur du fond perdu
source longueur — largeur de la bande source (plus étroite que size = étirée)
method "mirror", "extend", "replicate", "solid"
dpi DPI du cadre rastérisé 300
blur adoucir le cadre false
force traiter aussi les pages qui ont déjà un fond perdu false

copyPages(range?, opts?) → Document

Copie des pages dans un nouveau document (comme GUI Copy → New). Retourne le nouveau Document ou null. opts.bakeLayer: false exclut le calque d'édition Imposio de la copie (maquette PDF pure).

Modifications du contenu de page

Modifier ou supprimer des objets du flux de contenu de la page (la maquette elle-même, pas le calque d'édition). indexPath provient de pageObjects() — p. ex. [3], ou [3, 2] pour un enfant dans un Form XObject. Toutes les modifications préservent la mise en page : le reste de la page reste identique octet par octet (pas d'alignement de texte décalé).

Méthode Description
setPageObjectText(page, indexPath, newText, opts?) Change le texte d'un objet texte. opts { x, y, w, h } le déplace/redimensionne dans la même étape.
setPageObjectBounds(page, indexPath, x, y, w, h) Déplacer/redimensionner un objet (unité courante, Y vers le haut).
setPageObjectOpacity(page, indexPath, opacity) Opacité non destructive 01 (0 = masqué).
duplicateObject(page, indexPath, opts?) Duplicata vectoriel comme forme mobile du calque d'édition ; opts { dx, dy } décalage. Retourne l'ID de la nouvelle forme.

smartDeleteObjects(pageIndex, indexPaths, opts?)

Supprime les objets correspondant aux objets modèles sur de nombreuses pages (GUI Smart Delete) — p. ex. un filigrane ou un en-tête répété partout. pageIndex + indexPaths (un indexPath ou un tableau) désignent les objets modèles. Retourne le nombre d'objets supprimés, -1 en cas d'erreur.

Clé opts Valeurs Défaut
mode "identical" (même objet) ou "position" (ce qui s'y trouve) "identical"
range pages à traiter "all"
tolerance tolérance de correspondance (unité courante) 0,5 pt
verify re-rendre chaque page modifiée et l'ignorer si autre chose a changé true

Champs de formulaire

Lire et remplir les champs PDF interactifs (AcroForm). Les valeurs sont écrites dans le formulaire et restent modifiables ; utilisez flattenForms pour les figer définitivement dans le contenu de la page.

formFields()

Renvoie les champs interactifs du document. Chaque entrée :

Clé Description
name Nom complet du champ — la clé pour setFormField.
label Libellé lisible (/TU, repli sur name).
type "text", "checkbox", "radio", "choice", "pushbutton", "signature".
value Valeur actuelle (valeur texte/choice ; nom d'état actif pour les boutons).
checked true/false pour les cases à cocher et les boutons radio.
choices Options des champs choice (et noms d'état actif pour les boutons radio).
readOnly Verrouillé par l'auteur du formulaire.
multiline Le champ texte autorise les retours à la ligne.

setFormField(name, value)

Définit la valeur d'un champ. value est une chaîne pour les champs texte et choice, un booléen (ou "on"/"off") pour les cases à cocher, et le nom d'état actif pour les boutons radio. L'indicateur de lecture seule est ignoré — la valeur est remplacée. Renvoie true si appliqué.

setFormFields(values)

Définit plusieurs champs à la fois à partir d'un objet { name: value, … } (un passage par source ; les noms inconnus sont ignorés).

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?)

Fige les valeurs des champs de formulaire (et les annotations) dans le contenu de la page pour qu'elles survivent au redimensionnement, à la découpe et à l'imposition. Sur place ; range par défaut "all".

Données variables

mergeData(table, opts)

Fusionne des enregistrements de données avec le document (GUI Données variables → Générer) : pour chaque enregistrement, les pages sources sont copiées et les éléments mappés sont expansés — les modèles de texte/texte en cadre remplacent le texte, les modèles d'image s'expansent en chemin de fichier, les modèles de case à cocher décident de l'état (1/yes/true coche, vide/0/no décoche). Espaces réservés : {colonne}, {i:03}, {=expression}, {{ = littéral.

table est l'objet de imposio.loadData (ou { columns: […], rows: [[…]] } construit dans le script) ; null = fusion aux compteurs seuls.

Clé opts Description
mapping Requis. [{ page: 0, shape: id, template: "{nom}" }]. Les mappages d'image prennent aussi fit: "fit"\|"fill"\|"stretch"\|"keep" et align: "top-left"…"center"…"bottom-right" (ou 08).
mode "new" (défaut), "append", "fill".
sourcePages Plage 1-based ; défaut = les pages utilisées dans mapping.
records "all", "1-100", …
targets "fill" seulement : pages qui reçoivent les éléments (défaut = pages après le bloc source).
replace "fill" seulement : true remplace les éléments des pages cibles, false ajoute par-dessus.
counters [{ name: "i", start: 0, step: 1, max: 100 }]max facultatif ; avec max, la fusion fonctionne même sans table.
imageBaseDir Dossier de base pour les chemins d'image relatifs.
hidden [{ page: 0, shape: id }] — Visibilité : éléments exclus de la sortie.
pdfContent false exclut le contenu PDF sous-jacent des pages sources (éléments sur pages vierges ; new/append). Défaut true.

Retourne un nouveau Document pour "new", le nombre d'enregistrements fusionnés pour "append"/"fill". Lève une exception en cas d'erreur (le document reste inchangé).

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");

Export, enregistrement et rendu

exportImage(path, opts?)

Rend les pages en fichiers image. path est un dossier ou un fichier (le dossier est déduit).

Clé opts Valeurs Défaut
format "tiff", "png", "jpeg", "webp"
dpi number
quality number (JPEG/WebP)
box "media", "trim", "bleed", "crop"
range pages toutes
pattern motif de nom, p. ex. "{p}" ({p} = n° de page PDF, {n} = compteur de sortie)
multipageTiff bool — un TIFF pour tout le travail

save(path, opts?)

Enregistre en PDF. Renvoie un bool. opts.autoIndex = true ajoute _1, _2, … si le fichier cible existe (défaut false = écrase).

renderPng(pageIndex, dpi, outPath, opts?)

Rend une seule page en PNG. opts.background : "#rrggbb" ou "none"/"transparent" (défaut blanc).

Métadonnées et sécurité

Les changements sont écrits dans le PDF au save() (modèle dirty) ; les deux sont des mises à jour partielles.

metadata() / setMetadata(m)

metadata() renvoie { title, author, subject, keywords, creator, producer, created, modified } (created/modified en lecture seule). setMetadata({ title?, author?, subject?, keywords?, creator?, producer? }).

security() / setSecurity(s)

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

setSecurity({ encrypt?, userPassword?, ownerPassword?, algorithm?, allow…? })encrypt: false retire la sécurité à l'enregistrement. algorithm : "rc4-128", "aes-128", "aes-256".

Affichage

show(title?)

Ouvre ce document comme nouvel onglet dans l'app (GUI Run). No-op en headless/CLI.