Plantillas
Una plantilla es HTML y CSS con algunos extras. Los valores de data se insertan con
{{ }}, y {% %} añade lógica. La sintaxis es la de Tera,
cercana a las plantillas Jinja y Django.
<h1>Factura {{ number }}</h1><p>{{ customer.name }}, emitida el {{ issued | date(style="long") }}</p>
<table> {% for item in items %} <tr> <td>{{ item.name }}</td> <td>{{ item.amount | currency(code="EUR") }}</td> </tr> {% endfor %}</table>
{% if discount %}<p>Descuento aplicado</p>{% endif %}
<p>Total {{ total | currency(code="EUR") }}</p>Valores
Sección titulada «Valores»data es un objeto JSON. Accede a los objetos con un punto (customer.name) y recorre las
listas con {% for %}. Una variable llamada locale está siempre disponible y contiene el
idioma de la generación.
Los valores tienen el HTML escapado: un nombre como <b>Ana</b> aparece como texto, no como
marcado. Tu plantilla es marcado de confianza; tus datos no lo son.
{% if x %}…{% elif y %}…{% else %}…{% endif %}y comparaciones comox > 1.{% for item in items %}conloop.index,loop.firstyloop.last.- Aritmética:
{{ price * qty }}. {% set name = value %}para dar nombre a un valor intermedio.
Los filtros propios de Tera (upper, lower, round, length y otros) también funcionan.
El servicio añade tres para dar formato; consulta Idiomas y formato.
Lo que una plantilla no puede hacer
Sección titulada «Lo que una plantilla no puede hacer»Las plantillas no pueden incluir otros archivos ni leer nada fuera de la generación. La salida de una generación tiene un límite fijado por el plan, y una plantilla que produce demasiado se rechaza.
Guardar plantillas
Sección titulada «Guardar plantillas»Crea y edita plantillas en el portal, que previsualiza y valida mientras escribes, o mediante la API. Una plantilla debe compilar para poder guardarse.
curl -X POST https://api.example.com/v1/templates \ -H "Authorization: Bearer $RUSTEDF_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Factura", "source": "<h1>{{ number }}</h1>", "locale": "es-ES", "sample_data": { "number": "2025-0042" } }'sample_data solo sirve para la vista previa del portal. Cada cambio aumenta la version de
la plantilla. Las plantillas pertenecen a una cuenta: el id de una plantilla de otra cuenta
da 404.
Límites de los datos
Sección titulada «Límites de los datos»data debe ser un objeto JSON, de como máximo 32 niveles de profundidad y 200.000 valores,
y no mayor que el límite de entrada de tu plan.