Nodos
Image
Una imagen a la que apuntan tus datos, o una que produce un endpoint de generación.
A static image points at something you hold — a signature, a logo, a site photograph — with every field able to vary per recipient. A dynamic image describes what is wanted and leaves the endpoint to make it.
- Helpers
- image
- Clase de nodo
- image
- Categoría
- Medios
- Se resuelve
- Both
- Hijos
- None.
| Opción | Tipo | Qué hace |
|---|---|---|
id obligatorio | string | Stable address for the node. Generation endpoints target it and build artifacts diff on it, so treat a rename as a breaking change. |
src obligatorio | string | (data) => string | Static only. Path or URL to the image; lands on the node as path. |
alt | string | (data) => string | Static only. Alternative text — and, while the renderers draw a frame rather than the picture, the words printed inside it. |
width | number | (data) => number | Static only. Intended width. Carried onto the node untouched; no shipped renderer reads it yet. |
height | number | (data) => number | Static only. Intended height, on the same terms as width. |
placeholder | (data, availableTokens) => string | Dynamic only. What previews show in place of generated content. Optional, but a letter that reads badly without one cannot be reviewed. |
generalPrompt obligatorio | (data, availableTokens) => string | Dynamic only. What this node should say. |
infoPrompt | (data, availableTokens) => string | Dynamic only. Context the model should have but should not restate. |
negativePrompt | (data, availableTokens) => string | Dynamic only. What to avoid — claims, tones, or facts it must not invent. |
systemPrompt | (data, availableTokens) => string | Dynamic only. Role and voice, applied ahead of the other prompts. |
derivers | DeriverInvocation[] | Values computed before the node resolves, written to derived.* and readable from a template token. Built with derive(). |
Cada campo acepta una función
src, alt, width y height aceptan cada uno un valor simple o una función
de tus datos. Una firma que cambia según la oficina, un logotipo por marca, una
fotografía indexada por referencia — todo eso se queda dentro del nodo en lugar
de convertirse en una bifurcación en la plantilla:
image<MemberData>({
id: "signature",
src: (data) => data.signatureUrl,
alt: (data) => `Signed by ${data.managerName}`,
width: 180,
});
src pasa a ser path
La opción es src; el nodo resuelto la llama path. Despliega En qué se
resuelve en la primera variante de abajo para verlo.
Imágenes dinámicas
Una imagen dinámica se describe en lugar de suministrarse, y admite las mismas cuatro ranuras de prompt que un párrafo dinámico.
negativePrompt se gana su sitio aquí más que en ningún otro lado. Las imágenes
generadas fallan de formas predecibles — texto incrustado, logotipos inventados,
caras reconocibles — y la ranura las descarta de una vez, en el nodo.
Variantes
Static
src/nodes/image/static.node.ts A signature whose file and caption both follow the data.
import { image } from "docxcelerate";
import type { SampleData } from "../sample-data.ts";
/**
* Every field takes a plain value or a function of your data, so a signature
* that varies by manager needs no branching in the template.
*/
export const Signature = image<SampleData>({
id: "signature",
src: (data) => data.signatureUrl,
alt: (data) => `Signed by ${data.managerName}`,
width: 180,
height: 60,
}); En qué se resuelve
El nodo tal como aparece en el DocumentModel: el JSON que recibe un renderizador. Sin estilos, sin maquetación.
{
"id": "signature",
"kind": "image",
"mode": "static",
"path": "assets/signature-lindqvist.png",
"alt": "Signed by Tomas Lindqvist",
"width": 180,
"height": 60
} Dynamic
src/nodes/image/dynamic.node.ts Described rather than supplied, with the failure modes fenced off.
import { image } from "docxcelerate";
import type { SampleData } from "../sample-data.ts";
/**
* The same prompt set as a dynamic paragraph, for artwork the endpoint
* produces rather than something you hold. The placeholder is what previews
* show, so the layout is settled before any image exists.
*/
export const CentrePhoto = image<SampleData>({
id: "centre-photo",
placeholder: (data) => `Photograph of ${data.centreName}`,
generalPrompt: (data) =>
`A wide daylight photograph of the entrance to ${data.centreName}, ` +
`people arriving, no text overlay.`,
negativePrompt: () => `No logos, no recognisable faces, no stock-photo staging.`,
}); En qué se resuelve
El nodo tal como aparece en el DocumentModel: el JSON que recibe un renderizador. Sin estilos, sin maquetación.
{
"id": "centre-photo",
"kind": "image",
"mode": "dynamic",
"placeholder": "Photograph of Riverside Leisure Centre"
} Qué se le pide al endpoint
Resuelto con los mismos datos de ejemplo. Una compilación de vista previa se detiene en el marcador de posición; una compilación en el momento de la petición envía estos.
- general
- A wide daylight photograph of the entrance to Riverside Leisure Centre, people arriving, no text overlay.
- negative
- No logos, no recognisable faces, no stock-photo staging.
Notas
- El nodo guarda una ruta, nunca los bytes. Durante una compilación no se descarga ni se valida nada; una ruta rota falla en el momento de renderizar.
- Vale la pena escribir
altincluso mientras los renderizadores solo dibujan marcos, porque el marco imprimealt.