Arrastra los campos sobre la hoja para colocarlos. Lo que ves es lo que se imprime.
{% if formato %}
{# target="_blank" (una pestana nueva sin nombre en cada envio) es lo que
algunos navegadores endurecidos contra popups (p. ej. Brave con
Shields) bloquean en silencio a partir del segundo clic, sin mostrar
ningun aviso: el usuario ve "no pasa nada". Un target con nombre fijo
reutiliza siempre la misma pestana en vez de abrir una nueva cada vez,
que es el patron que esos navegadores SI dejan pasar de forma
confiable (y de paso evita acumular pestanas). #}
{% endif %}
{% endblock %}
{% block content %}
{% import _self as voucher %}
{% set currentName = form_data.nombre is defined ? form_data.nombre : (formato ? formato.nombre : '') %}
{% set currentBancoId = form_data.banco_id is defined ? form_data.banco_id : (formato and formato.banco ? formato.banco.id : '') %}
{% set currentCuentaId = form_data.cuenta_bancaria_id is defined ? form_data.cuenta_bancaria_id : (formato and formato.cuentaBancaria ? formato.cuentaBancaria.id : '') %}
{% set currentWidth = form_data.papel_ancho is defined ? form_data.papel_ancho : (formato ? formato.papelAncho : '216.00') %}
{% set currentHeight = form_data.papel_alto is defined ? form_data.papel_alto : (formato ? formato.papelAlto : '90.00') %}
{% set currentOrientation = form_data.orientacion is defined ? form_data.orientacion : (formato ? formato.orientacion : 'horizontal') %}
{% set currentUnit = form_data.unidad is defined and form_data.unidad in ['mm', 'cm', 'px'] ? form_data.unidad : (formato ? formato.unidad : 'mm') %}
{% set currentActive = form_data is not empty ? form_data.activo is defined : (not formato or formato.activo) %}
{% set hasSubmittedFields = form_data.campos is defined and form_data.campos is iterable and form_data.campos|length > 0 %}
{% set currentReferenceImageUrl = formato and formato.referenceImagePath ? '/' ~ formato.referenceImagePath|trim('/') : null %}
{# Una sola lista normalizada de campos alimenta la hoja y el panel lateral. #}
{% set campos = [] %}
{% if hasSubmittedFields %}
{% set campos = form_data.campos %}
{% elseif formato %}
{% for campo in formato.campos %}
{% set campos = campos|merge([{
campo: campo.campo, etiqueta: campo.etiqueta,
x: campo.x, y: campo.y, width: campo.width, height: campo.height,
fontSize: campo.fontSize, fontFamily: campo.fontFamily,
align: campo.align, visible: campo.visible
}]) %}
{% endfor %}
{% else %}
{% for key, label in defaultFields %}
{% set campos = campos|merge([{
campo: key, etiqueta: label,
x: '15.00', y: (12 + loop.index0 * 10) ~ '.00',
width: key == 'monto_letras' ? '150.00' : '70.00', height: '8.00',
fontSize: '10.00', fontFamily: 'Arial',
align: 'left', visible: true
}]) %}
{% endfor %}
{% endif %}
{% if formato %}
{# Formularios reales fuera del formulario principal (los
{% endif %}
{% endblock %}