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 0–3) |
— |
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 0–1 (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 0–8). |
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.