Ir al contenido

Generar con HTML directo

Envía el HTML en la petición cuando lo produces tú, cuando viene de otro sistema, o cuando quieres un documento puntual y nada que mantener en el portal.

Ventana de terminal
curl -X POST https://api.example.com/v1/render \
-H "Authorization: Bearer $RUSTEDF_KEY" \
-H "Content-Type: application/json" \
-d '{
"html": "<h1>Hola {{ name }}</h1><p>{{ total | currency(code=\"EUR\") }}</p>",
"data": { "name": "Mundo", "total": "1234.50" },
"locale": "es-ES"
}' \
-o hola.pdf

El campo html es una plantilla, igual que una guardada: {{ }}, {% %} y los filtros de formato funcionan (consulta Plantillas). Si tu HTML ya es definitivo, sin campos, envíalo tal cual y omite data.

No pegues datos dentro de la cadena de HTML; pásalos en data, para que se escapen. En Node.js:

const response = await fetch('https://api.example.com/v1/render', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.RUSTEDF_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
html: '<h1>{{ title }}</h1><ul>{% for i in items %}<li>{{ i }}</li>{% endfor %}</ul>',
data: { title: 'Lista de la compra', items: ['Pan', 'Leche'] },
}),
});
  • Envía html o template_id, nunca ambos y nunca ninguno: es un 400.
  • No se guarda nada. No hay versión ni vista previa en el portal; el HTML se envía de nuevo en cada petición, y el límite de tamaño de tu plan se aplica a él.
  • Las imágenes deben ser imágenes subidas (asset:<id>) o URL data:; consulta Imágenes.
  • Usa /v1/validate con el mismo cuerpo para comprobar el documento sin gastar un crédito.

Cuando el mismo diseño se genera a menudo, una plantilla guardada es más fácil de mantener. La petición y la respuesta están en Generar un PDF.