All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 2m8s
- Endpoint HTTP JSON-RPC en /api/mcp - 6 tools: list_templates, list_printers, print_template, print_raw, create_template, update_template - Guia de formato para impresora TM-U220 - Protegido por Authentik forward auth
5.5 KiB
5.5 KiB
Guia de Impresion para Epson TM-U220
Esta guia documenta las mejores practicas para generar impresiones legibles en impresoras Epson TM-U220 usando el sistema printerCentral.
Especificaciones de la Impresora
| Caracteristica | Valor |
|---|---|
| Columnas (Font A) | 40-42 caracteres |
| Columnas (Font B) | 33-35 caracteres |
| Columnas con doble ancho | ~20 caracteres |
| Caracteres por pulgada | 17.8/16 cpi |
| Ancho de papel | 57.5mm, 69.5mm, o 76mm |
Reglas Fundamentales
1. Limite de Caracteres por Linea
Texto normal: max 40 caracteres
Texto doble ancho: max 20 caracteres
Texto doble alto: max 40 caracteres
Texto doble ambos: max 20 caracteres
2. Caracteres Soportados
USAR - Caracteres ASCII basicos:
= - _ * + | / \ ( ) [ ] < >
A-Z a-z 0-9
EVITAR - Caracteres Unicode extendidos:
Box drawing: ╔ ═ ╗ ║ ╚ ╝ ┌ ┐ └ ┘
Simbolos especiales: → ← ↑ ↓ ★ ● ○
Emojis: cualquiera
3. Espaciado con Feed
Siempre usar feed para crear espacio visual. La impresora NO interpreta lineas vacias automaticamente.
{ "op": "feed", "lines": 1 } // Espacio simple
{ "op": "feed", "lines": 2 } // Espacio entre secciones
{ "op": "feed", "lines": 4 } // Espacio antes del corte
Estructura Recomendada de un Ticket
Header (Centrado, Destacado)
{ "op": "align", "align": "center" },
{ "op": "style", "bold": true, "width": 2, "height": 2 },
{ "op": "text", "value": "TITULO" },
{ "op": "style", "bold": false, "width": 1, "height": 1 },
{ "op": "feed", "lines": 2 }
Separadores
Siempre con feed antes y despues para que queden en su propia linea:
{ "op": "text", "value": "================================" },
{ "op": "feed", "lines": 1 }
Para 40 columnas usar 32 caracteres = (deja margen visual).
Titulos de Seccion
Usar bold + underline, seguido de feed:
{ "op": "style", "bold": true, "underline": true },
{ "op": "text", "value": "NOMBRE SECCION" },
{ "op": "style", "bold": false, "underline": false },
{ "op": "feed", "lines": 1 }
Items de Lista
Cada item con su propio feed para legibilidad:
{ "op": "text", "value": "[ ] Item uno" },
{ "op": "feed", "lines": 1 },
{ "op": "text", "value": "[ ] Item dos" },
{ "op": "feed", "lines": 1 }
Footer y Corte
{ "op": "align", "align": "center" },
{ "op": "text", "value": "Texto de pie" },
{ "op": "feed", "lines": 4 },
{ "op": "cut" }
Ejemplo Completo: Lista de Compras
{
"operations": [
{ "op": "align", "align": "center" },
{ "op": "style", "bold": true, "width": 2, "height": 2 },
{ "op": "text", "value": "MI TITULO" },
{ "op": "style", "bold": false, "width": 1, "height": 1 },
{ "op": "feed", "lines": 2 },
{ "op": "text", "value": "================================" },
{ "op": "feed", "lines": 1 },
{ "op": "style", "bold": true },
{ "op": "text", "value": "SUBTITULO" },
{ "op": "feed", "lines": 1 },
{ "op": "style", "bold": false },
{ "op": "text", "value": "================================" },
{ "op": "feed", "lines": 2 },
{ "op": "align", "align": "left" },
{ "op": "style", "bold": true, "underline": true },
{ "op": "text", "value": "SECCION 1" },
{ "op": "style", "bold": false, "underline": false },
{ "op": "feed", "lines": 1 },
{ "op": "text", "value": "[ ] Item A" },
{ "op": "feed", "lines": 1 },
{ "op": "text", "value": "[ ] Item B" },
{ "op": "feed", "lines": 2 },
{ "op": "align", "align": "center" },
{ "op": "text", "value": "================================" },
{ "op": "feed", "lines": 1 },
{ "op": "text", "value": "Pie de pagina" },
{ "op": "feed", "lines": 4 },
{ "op": "cut" }
]
}
Operaciones Disponibles
| Operacion | Parametros | Ejemplo |
|---|---|---|
text |
value |
{ "op": "text", "value": "Hola" } |
feed |
lines |
{ "op": "feed", "lines": 2 } |
cut |
- | { "op": "cut" } |
align |
align: left, center, right |
{ "op": "align", "align": "center" } |
style |
bold, underline, width, height |
{ "op": "style", "bold": true } |
Endpoints de Impresion
Imprimir Template Guardado
POST /api/print/template
{
"templateId": "template_xxx",
"variables": { "nombre": "Juan" },
"printerId": "printer_xxx", // opcional
"dryRun": false // true para preview
}
Imprimir Operaciones Directas
POST /api/print/raw
{
"operations": [...],
"variables": { "var1": "valor1" },
"printerId": "printer_xxx", // opcional
"dryRun": false
}
Variables en Templates
Sintaxis: {{nombre}} o {{nombre:label:default}}
{ "op": "text", "value": "Cliente: {{cliente}}" },
{ "op": "text", "value": "Fecha: {{fecha:Fecha:2025-01-01}}" }
Errores Comunes
- Texto cortado o ilegible: Excediste 40 caracteres por linea
- Todo pegado: Falta usar
feedentre elementos - Caracteres raros: Usaste Unicode no soportado
- Separadores mezclados: Falta
feedantes/despues de lineas=== - Header muy largo: Con doble ancho solo caben ~20 chars
Checklist Pre-Impresion
- Ninguna linea excede 40 caracteres (20 si doble ancho)
- Solo caracteres ASCII basicos
feedentre cada item para legibilidadfeedantes y despues de separadores===feed: 4antes delcutfinal- Header centrado con estilo destacado
- Secciones con titulos bold+underline