Saltar a contenido

Document

Un Document envuelve un PDF. Se obtiene mediante imposio.open(), imposio.newDocument(), imposio.activeDocument(), o mediante operaciones que producen un nuevo documento (generateImposition(), splitPages(), copyPages()).

Todos los índices de página son base 0. Los rangos son cadenas: "all", "1-5", "odd", "even", "2,4,7" (vacío = todos). Las longitudes están en la unidad actual, salvo que se proporcionen como cadena con sufijo.

Información

Método Devuelve Descripción
isValid() bool Si el documento se cargó correctamente.
pageCount() int Número de páginas.
filePath() string Ruta de origen (vacía para nuevos documentos).
title() string El título establecido por script.
setTitle(title) Establece el título de pestaña usado por show() / save().

Bounding boxes y tamaños de página

Cada uno devuelve un objeto en la unidad actual (coordenadas PDF, Y arriba). pageSize devuelve {w, h}; los getters de bounding box devuelven {x, y, w, h}.

Método Devuelve
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}

Inspección de página (solo lectura)

Método Devuelve
pageObjects(pageIndex) Objetos del content stream (recursivo en 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) Estructura tagged PDF (vacía si no tagged): [{ type, title, altText, actualText, children:[…] }]

Operaciones de página

Modifican el documento en su lugar (salvo indicación contraria).

resizePages(range, width, height, opts?)

Redimensiona páginas. Los bounding boxes trim/bleed/crop y el contenido de sangrado se conservan.

Clave opts Valores Predeterminado
placement "fit", "fill", "stretch", "keep" "fit"

deletePages(range)

Elimina las páginas en el rango range.

rotatePages(range, degrees, opts?)

Rota páginas. degrees es absoluto (0/90/180/270); con opts.increment = true se añade a la rotación actual.

duplicatePages(range, opts?)

Duplica páginas. opts.mode: "after" (predeterminado — una copia después de cada una), "block", "append".

reversePages(range?, opts?)

Invierte el orden de las páginas. opts.mode: "inplace" (predeterminado) o "compact".

movePages(range, destIndex)

Mueve las páginas de range antes del índice destIndex (base 0, en el espacio de páginas original).

setPageBoxes(range, boxes)

Establece los bounding boxes como retracciones desde el MediaBox (unidad actual). boxes: { bleed, trim, crop }.

addBlankPage(at, width, height)

Inserta una página en blanco (dimensiones en la unidad actual) en el índice at (-1 = al final).

addPagesFromFile(path, opts?)

Inserta páginas desde un PDF o una imagen (PNG/JPEG/BMP/GIF/TIFF/WebP → una página).

Clave opts Descripción
range Páginas de la fuente (solo PDF).
at Índice de inserción (-1 = al final).

replacePages(targetRange, source, opts?)

Elimina targetRange e inserta en su lugar páginas de source (PDF o imagen). opts.range selecciona las páginas fuente (predeterminado todas; ignorado para imágenes).

splitPages(cols, rows, opts?) → Document

Divide cada página en una cuadrícula cols × rows. Devuelve un nuevo Document.

Clave opts Valores
area "media", "trim", "bleed", "crop"
range páginas a dividir

rasterizePages(range?, dpiOrOpts?)

Reemplaza las páginas por su versión rasterizada (renderizada, aplanada sobre blanco — sin transparencia). En su lugar. El segundo argumento es un número de DPI (legacy) o un objeto:

Clave opts Valores Predeterminado
dpi number 300
cmyk bool false (RGB)
intent "perceptual", "relative", "saturation", "absolute" (o 03)
iccProfile ruta .icc GRACoL incorporado

generateBleed(range?, opts?)

Construye un marco de sangrado alrededor de las páginas a partir del propio borde del arte (GUI Generar sangrado). La página crece size en cada borde; la caja de corte se fija en la página original y la caja de sangrado en el nuevo borde, de modo que la imposición recorta correctamente. Solo se rasteriza el marco añadido — la página sigue siendo vectorial. Las páginas que ya tienen sangrado se omiten. Devuelve el número de páginas modificadas.

Clave opts Valores Predeterminado
size longitud — ancho del sangrado
source longitud — ancho de la franja de origen (más estrecha que size = se estira)
method "mirror", "extend", "replicate", "solid"
dpi DPI ráster del marco 300
blur suavizar el marco false
force procesar también páginas que ya tienen sangrado false

copyPages(range?, opts?) → Documento

Copia páginas a un documento nuevo (como GUI Copy → New). Devuelve el nuevo Documento o null. opts.bakeLayer: false excluye la capa de edición de Imposio de la copia (arte PDF limpio).

Ediciones del contenido de página

Editar o eliminar objetos del flujo de contenido de la página (el arte en sí, no la capa de edición). indexPath proviene de pageObjects() — p. ej. [3], o [3, 2] para un hijo dentro de un Form XObject. Todas las ediciones preservan la maquetación: el resto de la página queda idéntico byte a byte (sin alineaciones de texto descolocadas).

Método Descripción
setPageObjectText(page, indexPath, newText, opts?) Cambia el texto de un objeto de texto. opts { x, y, w, h } lo mueve/redimensiona en el mismo paso.
setPageObjectBounds(page, indexPath, x, y, w, h) Mover/redimensionar un objeto (unidad actual, Y hacia arriba).
setPageObjectOpacity(page, indexPath, opacity) Opacidad no destructiva 01 (0 = oculto).
duplicateObject(page, indexPath, opts?) Duplicado vectorial como forma móvil de la capa de edición; opts { dx, dy } desplazamiento. Devuelve el ID de la nueva forma.

smartDeleteObjects(pageIndex, indexPaths, opts?)

Elimina objetos que coinciden con objetos plantilla a lo largo de muchas páginas (GUI Smart Delete) — p. ej. una marca de agua o cabecera repetida por todas partes. pageIndex + indexPaths (un indexPath o un array) determinan los objetos plantilla. Devuelve el número de objetos eliminados, -1 en caso de error.

Clave opts Valores Predeterminado
mode "identical" (mismo objeto) o "position" (lo que esté en ese lugar) "identical"
range páginas a procesar "all"
tolerance tolerancia de coincidencia (unidad actual) 0,5 pt
verify re-renderizar cada página modificada y omitirla si cambió algo más true

Campos de formulario

Leer y rellenar campos PDF interactivos (AcroForm). Los valores se escriben en el formulario y siguen siendo editables; use flattenForms para fijarlos permanentemente en el contenido de la página.

formFields()

Devuelve los campos interactivos del documento. Cada entrada:

Clave Descripción
name Nombre completo del campo — la clave para setFormField.
label Etiqueta legible (/TU, recurre a name).
type "text", "checkbox", "radio", "choice", "pushbutton", "signature".
value Valor actual (valor texto/choice; nombre del estado activo para botones).
checked true/false para casillas de verificación y botones de opción.
choices Opciones para campos choice (y nombres de estado activo para botones de opción).
readOnly Bloqueado por el autor del formulario.
multiline El campo de texto permite saltos de línea.

setFormField(name, value)

Establece el valor de un campo. value es una cadena para los campos de texto y choice, un booleano (o "on"/"off") para las casillas de verificación, y el nombre del estado activo para los botones de opción. El indicador de solo lectura se ignora — el valor se sobrescribe. Devuelve true si se aplicó.

setFormFields(values)

Establece varios campos a la vez desde un objeto { name: value, … } (una pasada por origen; los nombres desconocidos se omiten).

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

Fija los valores de los campos de formulario (y las anotaciones) en el contenido de la página para que sobrevivan al cambio de tamaño, la división y la imposición. En su lugar; range predeterminado "all".

Datos variables

mergeData(table, opts)

Combina registros de datos con el documento (GUI Datos variables → Generar): por cada registro se copian las páginas de origen y se expanden los elementos asignados — las plantillas de texto/texto en marco sustituyen el texto, las de imagen se expanden a una ruta de archivo, las de casilla deciden la marca (1/yes/true marca, vacío/0/no desmarca). Marcadores: {columna}, {i:03}, {=expresión}, {{ = literal.

table es el objeto de imposio.loadData (o { columns: […], rows: [[…]] } construido en el script); null = combinación solo con contadores.

Clave opts Descripción
mapping Obligatorio. [{ page: 0, shape: id, template: "{nombre}" }]. Las asignaciones de imagen admiten además fit: "fit"\|"fill"\|"stretch"\|"keep" y align: "top-left"…"center"…"bottom-right" (o 08).
mode "new" (predeterminado), "append", "fill".
sourcePages Rango 1-based; predeterminado = las páginas usadas en mapping.
records "all", "1-100", …
targets Solo "fill": páginas que reciben los elementos (predeterminado = páginas tras el bloque de origen).
replace Solo "fill": true sustituye los elementos de las páginas destino, false añade encima.
counters [{ name: "i", start: 0, step: 1, max: 100 }]max opcional; con max la combinación funciona incluso sin tabla.
imageBaseDir Carpeta base para rutas de imagen relativas.
hidden [{ page: 0, shape: id }] — Visibilidad: elementos excluidos de la salida.
pdfContent false excluye el contenido PDF subyacente de las páginas de origen (elementos sobre páginas en blanco; new/append). Predeterminado true.

Devuelve un Documento nuevo para "new", el número de registros combinados para "append"/"fill". Lanza excepción en caso de error (el documento no cambia).

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

Exportación, guardado y renderizado

exportImage(path, opts?)

Renderiza páginas en archivos de imagen. path es una carpeta o un archivo.

Clave opts Valores Predeterminado
format "tiff", "png", "jpeg", "webp"
dpi number
quality number (JPEG/WebP)
box "media", "trim", "bleed", "crop"
range páginas todas
pattern patrón de nombre, p. ej. "{p}" ({p} = nº de página PDF, {n} = contador de salida)
multipageTiff bool — un TIFF para todo el trabajo

save(path, opts?)

Guarda en PDF. Devuelve un bool. opts.autoIndex = true añade _1, _2, … si el archivo de destino ya existe (predeterminado false = sobreescribe).

renderPng(pageIndex, dpi, outPath, opts?)

Renderiza una sola página en PNG. opts.background: "#rrggbb" o "none"/"transparent" (predeterminado blanco).

Metadatos y seguridad

Los cambios se escriben en el PDF al ejecutar save() (modelo dirty); ambos son actualizaciones parciales.

metadata() / setMetadata(m)

metadata() devuelve { title, author, subject, keywords, creator, producer, created, modified } (created/modified son de solo lectura). setMetadata({ title?, author?, subject?, keywords?, creator?, producer? }).

security() / setSecurity(s)

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

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

Visualización

show(title?)

Abre este documento como nueva pestaña en la app (GUI Run). No hace nada en modo headless/CLI.