Tip rápido: define siempre el tamaño del medio y la resolución esperada antes de posicionar nada. Eso elimina 80% de los “se me cortó la etiqueta”.
1) Medidas y DPI
Define ancho/alto del material y resolución del equipo. Ejemplo: etiqueta 100×50 mm a 203 DPI (8 dpmm).
^XA
^MNY ; Media handling (Tear-Off/Peel según tu equipo)
^PR5 ; Velocidad de impresión
^JMA ; Derivado de calibración si aplica
^PW812 ; Print Width en dots (100 mm * 8 dpmm = 800 + margen; usa 812)
^LL406 ; Label Length en dots (50 mm * 8 = 400 + margen)
^XZ
Fórmula: dots = mm × dpmm. Para 300 DPI, usa 12 dpmm.
2) Fuentes disponibles
Usa fuentes nativas (A,B,0, etc.) o carga bitmap. Evita referenciar TTF que no existen en la impresora.
^FO20,20^A0N,30,30^FDProducto:^FS
^FO20,60^A0N,40,40^FDZX-445 Caja 12 pzas^FS
3) QR legible
Tamaño recomendado: mínimo 20–22 mm por lado en 203 DPI. Usa corrección de errores media/alta.
^FO560,20
^BQN,2,7 ; ^BQN, orientación (2=N), corrección (1-4), tamaño módulo (1-10)
^FDQA,OT-2025-000123|CANT=12|LOTE=AB45^FS
4) Logos bien posicionados (GRF)
Convierte tu PNG a GRF y súbelo a la impresora. Luego solo lo llamas por nombre.
- Convierte a GRF con una utilidad de Zebra (o web). Guarda como
E:LOGO.GRF. - Imprime con
^XGy posiciona con^FO.
^FO20,330^XGE:LOGO.GRF,1,1^FS
5) Variables “hardcodeadas”
Evita cadenas fijas dentro del ZPL. Usa placeholders para sustituir desde tu sistema/PLC/Sheets.
^FO20,110^A0N,40,40^FD@PRODUCTO@^FS
^FO20,160^A0N,30,30^FDLOTE: @LOTE@^FS
^FO20,200^A0N,30,30^FDFECH: @FECHA@^FS
Si generas ZPL desde Google Sheets/Apps Script o n8n, sustituye @PRODUCTO@,
@LOTE@ y @FECHA@ al vuelo antes de mandar al socket/driver.
6) Sin vista previa (usa Labelary)
Valida antes de imprimir. Con Labelary puedes renderizar por API. Ejemplo con curl (203 DPI, 100×50 mm):
curl -o preview.png \
-H "Accept: image/png" \
--data-binary "@etiqueta.zpl" \
"http://api.labelary.com/v1/printers/8dpmm/labels/100x50/0/"
Si trabajas en Windows, puedes pegar el ZPL directo en su visor web y ajustar offsets hasta que quede perfecto.
7) Sin control de versiones
Versiona plantillas por cliente/orden y fecha. Agrega un ^FX con versión impresa para auditoría.
^FX v.2025-06-01 | Cliente ACME | OT-2025-000123
Plantilla ZPL mínima (100×50 mm @ 203 DPI)
^XA
^PW812^LL406
^CI28 ; UTF-8 si tu modelo lo soporta
^FO20,20^A0N,40,40^FD@PRODUCTO@^FS
^FO20,70^BY2,2,60^BCN,60,Y,N,N
^FD@UPC@^FS
^FO20,150^A0N,28,28^FDLOTE: @LOTE@^FS
^FO20,190^A0N,28,28^FDFECH: @FECHA@^FS
^FO560,20^BQN,2,7^FDQA,@QR@^FS
^FO20,330^XGE:LOGO.GRF,1,1^FS
^XZ
Checklist de validación (rápido)
- Tamaño:
^PW/^LLcorrectos para tu medio. - Resolución: 8 dpmm (203) o 12 dpmm (300) coherente con la impresora.
- Fuentes: solo nativas o bitmap cargadas.
- Códigos/QR: contraste alto, módulo ≥ 6–7 en 203 DPI (según distancia/lector).
- Logo GRF: almacenado y llamado con
^XG. - Placeholders: sustitución probada con datos reales.
- Vista previa: render OK en Labelary y prueba en impresora con media real.
- Versión: etiqueta contiene versión visible y repo/folio asociado.
¿Quieres que deje tus etiquetas listas con variables y vista previa?
Creo la plantilla ZPL, cargo logos, preparo sustitución de datos y un flujo de validación con Labelary. Ideal para PyME e industria en Querétaro.