Přeskočit obsah

Dokument

Document obaluje jedno PDF. Získáte ho z imposio.open(), imposio.newDocument(), imposio.activeDocument(), nebo z operací vytvářejících nový dokument (generateImposition(), splitPages(), copyPages()).

Všechny indexy stran jsou 0-based. Rozsahy jsou stringy: "all", "1-5", "odd", "even", "2,4,7" (prázdný = všechny). Délky jsou v aktuální jednotce, pokud nejsou zadány jako string se sufixem.

Informace

Metoda Vrací Popis
isValid() bool Zda se dokument načetl správně.
pageCount() int Počet stran.
filePath() string Cesta ke zdrojovému souboru (prázdná u nových dokumentů).
title() string Titul nastavený skriptem.
setTitle(title) Nastaví titul záložky pro show() / save().

Boxy a velikosti stran

Každá vrací objekt v aktuální jednotce (PDF souřadnice, Y-up). pageSize vrací {w, h}; gettery boxů vracejí {x, y, w, h}.

Metoda Vrací
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}

Inspekce strany (read-only)

Metoda Vrací
pageObjects(pageIndex) Objekty content streamu (rekurzivně i Form XObjecty): [{ 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) Struktura tagged PDF (prázdná pro netagovaná): [{ type, title, altText, actualText, children:[…] }]

Operace se stranami

Mutují dokument na místě (pokud není uvedeno jinak).

resizePages(range, width, height, opts?)

Změní velikost stran. Trim/bleed/crop boxy a obsah spadávky se zachovají.

Klíč opts Hodnoty Výchozí
placement "fit", "fill", "stretch", "keep" "fit"

deletePages(range)

Smaže strany v range.

rotatePages(range, degrees, opts?)

Otočí strany. degrees je absolutní (0/90/180/270); s opts.increment = true se přičte k aktuální rotaci.

duplicatePages(range, opts?)

Zduplikuje strany. opts.mode: "after" (výchozí — kopie za každou), "block", "append".

reversePages(range?, opts?)

Obrátí pořadí stran. opts.mode: "inplace" (výchozí) nebo "compact".

movePages(range, destIndex)

Přesune strany v range před index destIndex (0-based, v původním prostoru stran).

setPageBoxes(range, boxes)

Nastaví boxy stran jako insety od MediaBoxu (aktuální jednotka). boxes: { bleed, trim, crop }.

addBlankPage(at, width, height)

Vloží prázdnou stranu (rozměry v aktuální jednotce) na index at (-1 = konec).

addPagesFromFile(path, opts?)

Vloží strany z PDF nebo obrázku (PNG/JPEG/BMP/GIF/TIFF/WebP → jedna strana).

Klíč opts Popis
range Které strany ze zdroje (jen PDF).
at Index vložení (-1 = konec).

replacePages(targetRange, source, opts?)

Smaže targetRange a na jeho místo vloží strany ze source (PDF nebo obrázek). opts.range vybírá strany zdroje (výchozí všechny; u obrázku se ignoruje).

splitPages(cols, rows, opts?) → Dokument

Rozdělí každou stranu na mřížku cols × rows. Vrací nový Dokument.

Klíč opts Hodnoty
area "media", "trim", "bleed", "crop"
range strany k rozdělení

rasterizePages(range?, dpiOrOpts?)

Nahradí strany jejich rastrovou verzí (vykreslené, zploštěné na bílou — bez transparence). Na místě. Druhý argument je DPI číslo (legacy) nebo objekt:

Klíč opts Hodnoty Výchozí
dpi number 300
cmyk bool false (RGB)
intent "perceptual", "relative", "saturation", "absolute" (nebo 03)
iccProfile cesta k .icc bundlovaný GRACoL

generateBleed(range?, opts?)

Postaví rám spadávky kolem stran z vlastního okraje grafiky (GUI Generovat spadávku). Strana naroste o size na každé hraně; trim box se nastaví na původní stranu a bleed box na novou hranu, takže vyřazení ořízne správně. Rasterizuje se jen přidaný rám — strana zůstává vektorová. Strany, které už spadávku mají, se přeskočí. Vrací počet změněných stran.

Klíč opts Hodnoty Výchozí
size délka — šířka spadávky
source délka — šířka zdrojového pásu (užší než size = natáhne se)
method "mirror", "extend", "replicate", "solid"
dpi rastrové DPI rámu 300
blur změkčení rámu false
force zpracovat i strany, které už spadávku mají false

copyPages(range?, opts?) → Dokument

Zkopíruje strany do nového dokumentu (jako GUI Copy → New). Vrací nový Dokument nebo null. opts.bakeLayer: false vynechá Imposio edit layer z kopie (čistý PDF artwork).

Úpravy obsahu strany

Úprava či mazání objektů vlastního content streamu strany (samotná grafika, ne edit layer). indexPath pochází z pageObjects() — např. [3], nebo [3, 2] pro dítě ve Form XObjectu. Všechny úpravy zachovávají layout: zbytek strany zůstává bajtově identický (žádné rozpadlé zarovnání textu).

Metoda Popis
setPageObjectText(page, indexPath, newText, opts?) Změní text textového objektu. opts { x, y, w, h } jej ve stejném kroku přesune/změní velikost.
setPageObjectBounds(page, indexPath, x, y, w, h) Přesun/změna velikosti objektu (aktuální jednotky, Y-up).
setPageObjectOpacity(page, indexPath, opacity) Nedestruktivní průhlednost 01 (0 = skrytý).
duplicateObject(page, indexPath, opts?) Vektorový duplikát jako pohyblivý edit-layer tvar; opts { dx, dy } posun. Vrací ID nového tvaru.

smartDeleteObjects(pageIndex, indexPaths, opts?)

Smaže objekty odpovídající šablonovým objektům napříč stranami (GUI Smart Delete) — např. vodoznak či hlavičku opakovanou všude. pageIndex + indexPaths (jeden indexPath nebo jejich pole) určují šablonové objekty. Vrací počet smazaných objektů, -1 při chybě.

Klíč opts Hodnoty Výchozí
mode "identical" (stejný objekt) nebo "position" (cokoli na tom místě) "identical"
range které strany zpracovat "all"
tolerance tolerance shody (aktuální jednotky) 0,5 pt
verify pře-renderovat každou změněnou stranu a přeskočit ji, pokud se změnilo cokoli jiného true

Pole formuláře

Čtení a vyplňování interaktivních polí PDF (AcroForm). Hodnoty se zapíší do formuláře a zůstanou editovatelné; použijte flattenForms pro jejich trvalé zapečení do obsahu stránky.

formFields()

Vrátí interaktivní pole dokumentu. Každá položka:

Klíč Popis
name Plně kvalifikovaný název pole — klíč pro setFormField.
label Čitelný popis (/TU, fallback na name).
type "text", "checkbox", "radio", "choice", "pushbutton", "signature".
value Aktuální hodnota (text/choice hodnota; on-state název pro tlačítka).
checked true/false pro zaškrtávací políčka a přepínače.
choices Možnosti pro choice pole (a on-state názvy pro přepínače).
readOnly Uzamčeno autorem formuláře.
multiline Textové pole povoluje zalomení řádků.

setFormField(name, value)

Nastaví hodnotu jednoho pole. value je řetězec pro text a choice pole, boolean (nebo "on"/"off") pro zaškrtávací políčka a on-state název pro přepínače. Příznak jen pro čtení se ignoruje — hodnota se přepíše. Vrátí true pokud se aplikovalo.

setFormFields(values)

Nastaví více polí najednou z objektu { name: value, … } (jeden průchod na source; neznámé názvy se přeskočí).

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

Zapeče hodnoty polí formuláře (a anotace) do obsahu stránek, aby přežily resize, split a impozici. In-place; range výchozí "all".

Variabilní data

mergeData(table, opts)

Spojí datové záznamy s dokumentem (GUI Variabilní data → Generovat): pro každý záznam se zkopírují zdrojové strany a mapované elementy se expandují — šablony textu/rámcového textu nahradí text, obrázková šablona se expanduje na cestu k souboru, checkbox šablona rozhodne o zaškrtnutí (1/yes/true zaškrtne, prázdné/0/no odškrtne). Placeholdery: {sloupec}, {i:03}, {=vyraz}, {{ = literál.

table je objekt z imposio.loadData (nebo { columns: […], rows: [[…]] } poskládaný skriptem); null = merge jen s počítadly.

Klíč opts Popis
mapping Povinné. [{ page: 0, shape: id, template: "{jmeno}" }]. Obrázková mapování berou i fit: "fit"\|"fill"\|"stretch"\|"keep" a align: "top-left"…"center"…"bottom-right" (nebo 08).
mode "new" (výchozí), "append", "fill".
sourcePages 1-based rozsah; výchozí = strany použité v mapping.
records "all", "1-100", …
targets Jen "fill": strany, které dostanou elementy (výchozí = strany za zdrojovým blokem).
replace Jen "fill": true nahradí elementy cílových stran, false přidá navrch.
counters [{ name: "i", start: 0, step: 1, max: 100 }]max volitelné; s max funguje merge i bez tabulky.
imageBaseDir Základní složka pro relativní cesty obrázků.
hidden [{ page: 0, shape: id }] — Viditelnost: položky vynechané z výstupu.
pdfContent false vynechá podkladový PDF obsah zdrojových stran (elementy na prázdných stranách; new/append). Výchozí true.

Vrací nový Dokument pro "new", počet zmergovaných záznamů pro "append"/"fill". Při chybě vyhodí výjimku (dokument se nezmění).

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, uložení a render

exportImage(path, opts?)

Vykreslí strany do obrazových souborů. path je složka nebo soubor (složka se odvodí).

Klíč opts Hodnoty Výchozí
format "tiff", "png", "jpeg", "webp"
dpi number
quality number (JPEG/WebP)
box "media", "trim", "bleed", "crop"
range strany všechny
pattern vzor názvu, např. "{p}" ({p} = číslo strany v PDF, {n} = výstupní počítadlo)
multipageTiff bool — jeden TIFF pro celou zakázku

save(path, opts?)

Uloží jako PDF. Vrací bool. opts.autoIndex = true připojuje _1, _2, … když cílový soubor existuje (výchozí false = přepíše).

renderPng(pageIndex, dpi, outPath, opts?)

Vykreslí jednu stranu do PNG. opts.background: "#rrggbb" nebo "none"/"transparent" (výchozí bílá).

Metadata a zabezpečení

Změny se zapíší do PDF až při save() (dirty model); obě jsou částečné (partial) úpravy.

metadata() / setMetadata(m)

metadata() vrací { title, author, subject, keywords, creator, producer, created, modified } (created/modified jen pro čtení). setMetadata({ title?, author?, subject?, keywords?, creator?, producer? }).

security() / setSecurity(s)

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

setSecurity({ encrypt?, userPassword?, ownerPassword?, algorithm?, allow…? })encrypt: false odstraní zabezpečení při uložení. algorithm: "rc4-128", "aes-128", "aes-256".

Zobrazení

show(title?)

Otevře tento dokument jako novou záložku v aplikaci (GUI Run). Při běhu headless/CLI je to no-op.