Dokument¶
Ein Document umhüllt ein PDF. Sie erhalten es von imposio.open(),
imposio.newDocument(), imposio.activeDocument() oder von Operationen, die ein neues
Dokument erzeugen (generateImposition(), splitPages(), copyPages()).
Alle Seitenindizes sind 0-basiert. Bereiche sind Strings: "all", "1-5", "odd",
"even", "2,4,7" (leer = alle). Längen sind in der aktuellen Einheit, sofern nicht als
String mit Suffix angegeben.
Informationen¶
| Methode | Ergebnis | Beschreibung |
|---|---|---|
isValid() |
bool | Ob das Dokument korrekt geladen wurde. |
pageCount() |
int | Seitenzahl. |
filePath() |
string | Quellpfad (leer bei neuen Dokumenten). |
title() |
string | Der per Skript gesetzte Titel. |
setTitle(title) |
— | Setzt den Tab-Titel für show() / save(). |
Seitenboxen & -größen¶
Jede gibt ein Objekt in der aktuellen Einheit zurück (PDF-Koordinaten, Y-up). pageSize
liefert {w, h}; die Box-Getter liefern {x, y, w, h}.
| Methode | Ergebnis |
|---|---|
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} |
Seiteninspektion (read-only)¶
| Methode | Ergebnis |
|---|---|
pageObjects(pageIndex) |
Content-Stream-Objekte (rekursiv in 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) |
Tagged-PDF-Struktur (leer bei ungetaggten): [{ type, title, altText, actualText, children:[…] }] |
Seitenoperationen¶
Diese verändern das Dokument direkt (sofern nicht anders angegeben).
resizePages(range, width, height, opts?)¶
Skaliert Seiten auf eine neue Größe. Trim-/Bleed-/Crop-Boxen und Beschnittinhalt bleiben erhalten.
opts-Schlüssel |
Werte | Standard |
|---|---|---|
placement |
"fit", "fill", "stretch", "keep" |
"fit" |
deletePages(range)¶
Löscht die Seiten in range.
rotatePages(range, degrees, opts?)¶
Dreht Seiten. degrees ist absolut (0/90/180/270); mit opts.increment = true wird
es zur aktuellen Drehung addiert.
duplicatePages(range, opts?)¶
Dupliziert Seiten. opts.mode: "after" (Standard — Kopie nach jeder), "block", "append".
reversePages(range?, opts?)¶
Kehrt die Seitenreihenfolge um. opts.mode: "inplace" (Standard) oder "compact".
movePages(range, destIndex)¶
Verschiebt die Seiten in range vor den Index destIndex (0-basiert, im ursprünglichen
Seitenraum).
setPageBoxes(range, boxes)¶
Setzt Seitenboxen als Einzüge von der MediaBox (aktuelle Einheit). boxes:
{ bleed, trim, crop }.
addBlankPage(at, width, height)¶
Fügt eine Leerseite (Maße in der aktuellen Einheit) am Index at ein (-1 = Ende).
addPagesFromFile(path, opts?)¶
Fügt Seiten aus einem PDF oder einem Bild ein (PNG/JPEG/BMP/GIF/TIFF/WebP → eine Seite).
opts-Schlüssel |
Beschreibung |
|---|---|
range |
Welche Seiten der Quelle (nur PDF). |
at |
Einfügeindex (-1 = Ende). |
replacePages(targetRange, source, opts?)¶
Löscht targetRange und fügt an der Stelle Seiten aus source ein (PDF oder Bild).
opts.range wählt Quellseiten (Standard alle; bei Bildern ignoriert).
splitPages(cols, rows, opts?) → Dokument¶
Teilt jede Seite in ein cols × rows-Raster. Gibt ein neues Dokument zurück.
opts-Schlüssel |
Werte |
|---|---|
area |
"media", "trim", "bleed", "crop" |
range |
zu teilende Seiten |
rasterizePages(range?, dpiOrOpts?)¶
Ersetzt Seiten durch ihre gerasterte Version (gerendert, auf Weiß abgeflacht — keine Transparenz). In-place. Das zweite Argument ist eine DPI-Zahl (legacy) oder ein Objekt:
opts-Schlüssel |
Werte | Standard |
|---|---|---|
dpi |
number | 300 |
cmyk |
bool | false (RGB) |
intent |
"perceptual", "relative", "saturation", "absolute" (oder 0–3) |
— |
iccProfile |
Pfad zu .icc |
mitgeliefertes GRACoL |
generateBleed(range?, opts?)¶
Baut einen Anschnittrahmen um Seiten aus der eigenen Kante des Artworks (GUI Anschnitt
erzeugen). Die Seite wächst um size an jeder Kante; die Trim-Box wird auf die
ursprüngliche Seite gesetzt und die Bleed-Box auf die neue Kante, sodass das Ausschießen
korrekt beschneidet. Nur der hinzugefügte Rahmen wird gerastert — die Seite bleibt
vektoriell. Seiten mit vorhandenem Anschnitt werden übersprungen. Gibt die Anzahl der
geänderten Seiten zurück.
opts-Schlüssel |
Werte | Standard |
|---|---|---|
size |
Länge — Anschnittbreite | — |
source |
Länge — Breite des Quellstreifens (schmaler als size = wird gestreckt) |
— |
method |
"mirror", "extend", "replicate", "solid" |
— |
dpi |
Raster-DPI des Rahmens | 300 |
blur |
Rahmen weichzeichnen | false |
force |
auch Seiten mit vorhandenem Anschnitt verarbeiten | false |
copyPages(range?, opts?) → Dokument¶
Kopiert Seiten in ein neues Dokument (wie GUI Copy → New). Gibt das neue Dokument oder
null zurück. opts.bakeLayer: false lässt die Imposio-Bearbeitungsebene aus der Kopie
(sauberes PDF-Artwork).
Seiteninhalt bearbeiten¶
Objekte des Content-Streams der Seite bearbeiten oder entfernen (das Artwork selbst, nicht
die Bearbeitungsebene). indexPath stammt aus pageObjects() — z. B. [3], oder [3, 2]
für ein Kind in einem Form-XObject. Alle Bearbeitungen sind layout-erhaltend: der Rest
der Seite bleibt byte-identisch (kein verschobener Textsatz).
| Methode | Beschreibung |
|---|---|
setPageObjectText(page, indexPath, newText, opts?) |
Ändert den Text eines Textobjekts. opts { x, y, w, h } verschiebt/skaliert es im selben Schritt. |
setPageObjectBounds(page, indexPath, x, y, w, h) |
Objekt verschieben/skalieren (aktuelle Einheit, Y-up). |
setPageObjectOpacity(page, indexPath, opacity) |
Nicht-destruktive Deckkraft 0–1 (0 = verborgen). |
duplicateObject(page, indexPath, opts?) |
Vektorduplikat als bewegliche Form der Bearbeitungsebene; opts { dx, dy } Versatz. Gibt die neue Form-ID zurück. |
smartDeleteObjects(pageIndex, indexPaths, opts?)¶
Löscht Objekte, die Vorlagenobjekten entsprechen, über viele Seiten hinweg (GUI Smart
Delete) — z. B. ein überall wiederholtes Wasserzeichen oder eine Kopfzeile. pageIndex +
indexPaths (ein indexPath oder ein Array) bestimmen die Vorlagenobjekte. Gibt die Anzahl
der gelöschten Objekte zurück, -1 bei Fehler.
opts-Schlüssel |
Werte | Standard |
|---|---|---|
mode |
"identical" (gleiches Objekt) oder "position" (was immer dort liegt) |
"identical" |
range |
zu verarbeitende Seiten | "all" |
tolerance |
Übereinstimmungstoleranz (aktuelle Einheit) | 0,5 pt |
verify |
jede geänderte Seite neu rendern und überspringen, falls sich sonst etwas geändert hat | true |
Formularfelder¶
Interaktive PDF-Felder (AcroForm) lesen und ausfüllen. Werte werden in das Formular geschrieben und bleiben bearbeitbar; mit flattenForms werden sie dauerhaft in den Seiteninhalt eingebacken.
formFields()¶
Gibt die interaktiven Felder des Dokuments zurück. Jeder Eintrag:
| Schlüssel | Beschreibung |
|---|---|
name |
Voll qualifizierter Feldname — der Schlüssel für setFormField. |
label |
Lesbare Beschriftung (/TU, Fallback auf name). |
type |
"text", "checkbox", "radio", "choice", "pushbutton", "signature". |
value |
Aktueller Wert (Text-/Choice-Wert; On-State-Name für Schaltflächen). |
checked |
true/false für Kontrollkästchen und Optionsfelder. |
choices |
Optionen für Choice-Felder (und On-State-Namen für Optionsfelder). |
readOnly |
Vom Formularautor gesperrt. |
multiline |
Textfeld erlaubt Zeilenumbrüche. |
setFormField(name, value)¶
Setzt den Wert eines Feldes. value ist eine Zeichenkette für Text- und Choice-Felder, ein Boolean (oder "on"/"off") für Kontrollkästchen und der On-State-Name für Optionsfelder. Das Schreibschutz-Flag wird ignoriert — der Wert wird überschrieben. Gibt true zurück, wenn angewendet.
setFormFields(values)¶
Setzt viele Felder auf einmal aus einem Objekt { name: value, … } (ein Durchlauf pro Quelle; unbekannte Namen werden übersprungen).
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?)¶
Backt Formularfeldwerte (und Anmerkungen) in den Seiteninhalt ein, damit sie Resize, Split und Ausschießen überstehen. In-place; range standardmäßig "all".
Variable Daten¶
mergeData(table, opts)¶
Führt Datensätze mit dem Dokument zusammen (GUI Variable Daten → Erzeugen): für jeden
Datensatz werden die Quellseiten kopiert und die zugeordneten Elemente expandiert —
Text-/Rahmentext-Vorlagen ersetzen den Text, Bildvorlagen expandieren zu einem Dateipfad,
Checkbox-Vorlagen entscheiden das Ankreuzen (1/yes/true kreuzt an, leer/0/no
kreuzt ab). Platzhalter: {spalte}, {i:03}, {=ausdruck}, {{ = Literal.
table ist das Objekt aus imposio.loadData (oder
{ columns: […], rows: [[…]] } im Skript gebaut); null = Merge nur mit Zählern.
opts-Schlüssel |
Beschreibung |
|---|---|
mapping |
Erforderlich. [{ page: 0, shape: id, template: "{name}" }]. Bildzuordnungen nehmen zusätzlich fit: "fit"\|"fill"\|"stretch"\|"keep" und align: "top-left"…"center"…"bottom-right" (oder 0–8). |
mode |
"new" (Standard), "append", "fill". |
sourcePages |
1-basierter Bereich; Standard = die in mapping benutzten Seiten. |
records |
"all", "1-100", … |
targets |
Nur "fill": Seiten, die die Elemente erhalten (Standard = Seiten nach dem Quellblock). |
replace |
Nur "fill": true ersetzt die Elemente der Zielseiten, false legt sie obendrauf. |
counters |
[{ name: "i", start: 0, step: 1, max: 100 }] — max optional; mit max funktioniert der Merge auch ohne Tabelle. |
imageBaseDir |
Basisordner für relative Bildpfade. |
hidden |
[{ page: 0, shape: id }] — Sichtbarkeit: Einträge, die aus der Ausgabe bleiben. |
pdfContent |
false lässt den darunterliegenden PDF-Inhalt der Quellseiten weg (Elemente auf leeren Seiten; new/append). Standard true. |
Gibt für "new" ein neues Dokument zurück, für "append"/"fill" die Anzahl der
zusammengeführten Datensätze. Wirft bei Fehler (das Dokument bleibt unverändert).
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, Speichern & Rendern¶
exportImage(path, opts?)¶
Rendert Seiten in Bilddateien. path ist ein Ordner oder eine Datei (der Ordner wird
abgeleitet).
opts-Schlüssel |
Werte | Standard |
|---|---|---|
format |
"tiff", "png", "jpeg", "webp" |
— |
dpi |
number | — |
quality |
number (JPEG/WebP) | — |
box |
"media", "trim", "bleed", "crop" |
— |
range |
Seiten | alle |
pattern |
Namensmuster, z. B. "{p}" ({p} = PDF-Seitennr., {n} = Ausgabezähler) |
— |
multipageTiff |
bool — ein TIFF für den ganzen Auftrag | — |
save(path, opts?)¶
Speichert als PDF. Gibt bool zurück. opts.autoIndex = true hängt _1, _2, … an, wenn die
Zieldatei existiert (Standard false = überschreiben).
renderPng(pageIndex, dpi, outPath, opts?)¶
Rendert eine einzelne Seite als PNG. opts.background: "#rrggbb" oder
"none"/"transparent" (Standard Weiß).
Metadaten & Sicherheit¶
Änderungen werden erst bei save() ins PDF geschrieben (Dirty-Modell); beides sind
partielle Updates.
metadata() / setMetadata(m)¶
metadata() liefert { title, author, subject, keywords, creator, producer, created,
modified } (created/modified nur lesbar). setMetadata({ title?, author?, subject?,
keywords?, creator?, producer? }).
security() / setSecurity(s)¶
security() liefert { encrypt, algorithm, userPassword, ownerPassword, allowPrint,
allowHighResPrint, allowCopy, allowModify, allowAnnotate, allowForms, allowExtract,
allowAssembly, wasEncrypted }.
setSecurity({ encrypt?, userPassword?, ownerPassword?, algorithm?, allow…? }) — encrypt:
false entfernt die Sicherheit beim Speichern. algorithm: "rc4-128", "aes-128",
"aes-256".
Anzeige¶
show(title?)¶
Öffnet dieses Dokument als neuen Tab in der App (GUI-Run). Im Headless-/CLI-Betrieb ein No-op.