Documentación: Etiquetas y Tickets
Guía rápida para integrar el motor SAE.STUDIO en tus flujos de logística y punto de venta.
01 Arquitectura Unificada
SAE.STUDIO es un motor híbrido. A diferencia de otros editores, permite gestionar tanto Etiquetado Industrial (formatos fijos como 4x6", 2x1") como Tickets de Punto de Venta (rollos continuos de 80mm/58mm).
El servicio SAE.STUDIO.Api escucha en el puerto local 5117 y procesa ambos tipos de documentos de forma nativa.
02 Integración vía API JSON
Interactúa con el servicio enviando un POST a sus endpoints correspondientes, enviando el XML de la plantilla y los datos a inyectar.
Imprimir Etiqueta Industrial (ZPL/EPL)
POST http://localhost:5117/api/labels/print
{
"xml": "<SaeLabels>...</SaeLabels>",
"printerName": "Zebra_ZD420",
"data": {
"CLIENTE": "Alejandro Eskender",
"PRODUCTO": "Premium Label v2"
}
} Imprimir Ticket de Recibo (ESC/POS)
POST http://localhost:5117/api/tickets/print
{
"xml": "<SaeTickets><Header>...</Header><Body...></SaeTickets>",
"printerName": "Epson_TM_T20",
"data": {
"NRO_ORDEN": "100234",
"TOTAL": "$150.00"
}
} Diseñador Visual
Utiliza el editor de escritorio para crear plantillas .SaeLabels y .SaeTickets. El servicio SAE.STUDIO.Api se encarga de inyectar las variables y convertirlo a comandos nativos.
Inyección de Variables
Mapeo dinámico de datos JSON a campos de la etiqueta.
Soporte Multi-Arquitectura
Compilado nativamente para Windows x64.
03 Referencia de Variables (Tickets)
Al diseñar un ticket, puedes utilizar variables en el texto envolviéndolas en ${VARIABLE} (ej: ${CLIENTE}). El motor de renderizado reemplazará estas variables con los valores enviados en el objeto data de la API.
Variables Especiales del Sistema
Estas variables se procesan automáticamente en el backend sin necesidad de enviarlas en el JSON:
También compatibles con tags heredados: ${DATE}, ${TIME}, ${NOW}, ${YEAR}, ${MONTH}, ${DAY}.
Comandos en Bloques
La estructura XML (.SaeTickets) soporta múltiples bloques funcionales:
<TextBlock>: Texto simple o con variables. Soportaalign,bold, y tamaños.<SepBlock>: Dibuja una línea separadora usando un carácter (ej:------).<TotalBlock>: Renderiza a dos columnas (Etiqueta a la izq., Valor a la der.).<QrBlock>: Imprime un código QR dinámico basado en las variables dadas.<EachBlock>: Itera sobre una lista de objetos en el JSON (ideal para productos/líneas de la orden).<IfBlock> / <IfelseBlock>: Muestra contenido condicionalmente evaluando una variable booleana del JSON.<ActionBlock>: Envía comandos de hardware al ticket (cutpara corte,beep, oopen-drawer).