zplCloud Blog

Imprimir ZPL en cualquier impresora de etiquetas: TSC, Honeywell, SATO, Brother, Toshiba y más

Tus etiquetas están en ZPL, pero no todas las impresoras son Zebra. Cómo imprimir exactamente la misma etiqueta en impresoras que hablan TSPL, DPL, SBPL, EPL2, CPCL, ESC/POS, Brother raster, PCL, Easy Plug, TPCL o JScript - como PNG, PDF o trabajo raw para el puerto 9100.

13 min de lectura zplCloud Team

Una etiqueta, once lenguajes de impresora

Una etiqueta de envío ZPL se renderiza una sola vez como mapa de bits y se envía a impresoras TSC, Honeywell, SATO, Brother, Toshiba Tec, cab y Avery Dennison, cada una en su propio lenguaje de impresora

ZPL es el lenguaje de etiquetas más extendido que existe, y se escribió para impresoras Zebra. Eso no es un problema hasta que en el almacén no todo es Zebra. Una impresora TSC llegó con una oferta más barata, la planta del país vecino trabaja con SATO, en la zona de embalaje hay una Brother QL en cada mesa, la línea de impresión y aplicación lleva cabezales de Avery Dennison o Novexx, y las devoluciones se imprimen en la láser de la oficina. Las etiquetas, en cambio, existen una sola vez: como ZPL, generado por el ERP, la tienda online o el diseñador de zplCloud.

Esta guía muestra cómo llevar esa única etiqueta ZPL a todas esas impresoras - idéntica, punto por punto - y en qué hay que fijarse.


Tres formas de llevar ZPL a una impresora que no habla ZPL

1. Emulación. Muchos fabricantes incluyen una emulación ZPL: Honeywell ZSim, SATO SZPL, Godex GZPL, Citizen Cross-Emulation, los modos ZPL de TSC y cab. Para etiquetas sencillas funciona. Para todo lo demás, una emulación es una reimplementación de ZPL hecha por otro: las métricas de las fuentes, los anchos de los códigos de barras, el ajuste de texto en los campos ^FB, los gráficos ^GFA y las fuentes almacenadas se comportan de forma ligeramente distinta, y acabas probando cada plantilla en cada modelo.

2. Traducir comandos. Un conversor reescribe ^FO…^A0…^FD en los comandos de texto y de código de barras del otro lenguaje. Eso solo funciona con los comandos que tienen equivalente, y la impresora usa entonces sus fuentes y su generador de códigos de barras. El resultado es parecido, no idéntico.

3. Enviar una imagen. La etiqueta se renderiza una vez, a la resolución de la impresora de destino, y se envía como mapa de bits monocromo en el comando gráfico propio de esa impresora. Todos los lenguajes de impresora tienen uno. La impresora ya no interpreta nada - solo imprime puntos. Fuentes, Unicode, logotipos y códigos de barras se ven exactamente como en la vista previa.

zplCloud sigue el tercer camino, en dos variantes: como archivo de imagen para todo lo que tiene controlador, y como trabajo raw en el lenguaje de la impresora para todo lo que está en la red.


Variante 1: PNG, JPG o PDF

Para impresoras de oficina, adjuntos de correo y archivo, la etiqueta se convierte simplemente en un archivo:

  • ZPL a PDF renderiza una página por etiqueta, o coloca las etiquetas a su tamaño original en hojas A4 o Letter con líneas de corte - la forma más rápida de imprimir una etiqueta de devolución en la láser de la oficina.
  • ZPL a PNG y ZPL a JPG renderizan etiquetas individuales a 203, 300 o 600 dpi, por ejemplo para un sistema de tienda que imprime a través de un controlador.

Sea cual sea el dispositivo que imprime el archivo, imprime la misma imagen. El límite de esta variante es el controlador que hay en medio: escala, añade márgenes y necesita un ordenador.


Variante 2: el lenguaje propio de la impresora, como mapa de bits

Las impresoras de etiquetas en red no necesitan controlador. Las herramientas de impresora y los endpoints de API correspondientes generan un trabajo terminado que va directamente al puerto TCP 9100:

1. Renderizar. El motor de zplCloud dibuja cada etiqueta ^XA…^XZ a la resolución del cabezal de impresión de destino - sin antialiasing, tal como imprime un cabezal térmico. Una línea de un punto sigue teniendo exactamente un punto de ancho.

2. Reducir a 1 bit. Cada punto es negro o blanco.

3. Empaquetar. El mapa de bits se incluye en el comando gráfico del lenguaje de destino, junto con los pocos comandos que el trabajo necesita para imprimirse.

4. Enviar. El archivo se envía sin cambios al puerto 9100 de la impresora.

ImpresorasLenguajeHerramientaComando de imagenCompresión
TSC, Printronix serie TTSPLZPL a TSPLBITMAPPCX (DOWNLOAD + PUTPCX)
Honeywell, Datamax-O'NeilDPLZPL a DPL<STX>I + campo de imagensiempre PCX
SATOSBPLZPL a SBPLESC GB / ESC GHPCX (ESC GP)
Impresoras Zebra EPLEPL2ZPL a EPL2GW-
Móviles Zebra y HoneywellCPCLZPL a CPCLbandas CG / EGPCX (PCX)
Epson TM, Star, BixolonESC/POSZPL a ESC/POSGS v 0-
Brother QL, TD-4, P-touchBrother rasterZPL a Brother Rasterlíneas rasterTIFF PackBits
HP LaserJet y láseres PCLPCL 5ZPL a PCLESC*b#WTIFF PackBits
Avery Dennison, NovexxEasy PlugZPL a Easy Plug#YIBRLE (#YIR)
Toshiba TecTPCLZPL a TPCL{SG;…}TOPIX
cabJScriptZPL a JScriptcarga de imagen + campo IPCX

Cada trabajo sigue el manual de programación del fabricante, y cada lenguaje se prueba decodificando el trabajo terminado de nuevo en un mapa de bits que debe coincidir punto por punto con la etiqueta renderizada - incluidos los ejemplos resueltos de la documentación de TOPIX de Toshiba y de RLE de Novexx.


¿Cuántos datos necesita una imagen?

Una imagen ocupa más que ZPL. Las cifras reales, para una etiqueta de envío típica de 100 × 150 mm a 203 dpi (812 × 1218 puntos) con texto, un DataMatrix, un código QR, un código de barras GS1-128 y una línea de texto en japonés, ruso y árabe:

TrabajoSin comprimirComprimido
Código fuente ZPL (como referencia)859 bytes-
TSPL121 KB52 KB (PCX)
EPL2121 KB-
SBPL122 KB52 KB (PCX)
DPL-52 KB (PCX)
CPCL81 KB (sin filas en blanco)52 KB (PCX)
JScript124 KB (BMP)52 KB (PCX)
Brother raster, TD-4420DN128 KB45 KB (TIFF)
PCL a 300 dpi64 KB (sin filas en blanco)44 KB (TIFF)
Easy Plug121 KB16 KB (RLE)
TPCL121 KB9,5 KB (TOPIX)

Destacan tres cosas:

  • Sin comprimir, sale aproximadamente 1 bit por punto. 812 × 1218 puntos son 121 KB, sea cual sea el lenguaje.
  • Gana la compresión que mira las filas vecinas. PCX y PackBits solo comprimen dentro de una fila. TOPIX de Toshiba envía únicamente los bytes que han cambiado respecto a la fila anterior, y el RLE de Easy Plug repite filas idénticas - y las etiquetas tienen mucho de ambas cosas.
  • En la red apenas importa. 121 KB tardan unos 10 ms en una Ethernet de 100 Mbit. La compresión compensa en Wi-Fi y Bluetooth, en lotes de miles de etiquetas y en impresoras con poco búfer de recepción.

Las herramientas web muestran el tamaño de cada trabajo y, con la compresión activada, cuánto se ha ahorrado.


Paso a paso

En la web, sin necesidad de cuenta:

1. Abre la herramienta de tu impresora, por ejemplo ZPL a TSPL.

2. Pega el ZPL o abre el archivo .zpl.

3. Elige la resolución de la impresora (203, 300 o 600 dpi; en Brother, el modelo).

4. Si quieres, activa la compresión y convierte.

5. Revisa la vista previa - muestra exactamente los puntos que se enviarán - y descarga el trabajo.

6. Envíalo a la impresora:

# Linux / macOS
nc -q 1 192.168.1.50 9100 < label.tspl
# Windows PowerShell
$c = [Net.Sockets.TcpClient]::new('192.168.1.50', 9100)
$b = [IO.File]::ReadAllBytes("$PWD\label.tspl")
$c.GetStream().Write($b, 0, $b.Length); $c.Close()

A través de la API, para tu propio software: cada herramienta es un endpoint POST /v1/tools/zpl-to-<language> en api.zplcloud.com. La respuesta es el trabajo raw:

jq -Rs '{zpl: ., dpi: 203, compress: true}' label.zpl \
  | curl -X POST https://api.zplcloud.com/v1/tools/zpl-to-tpcl \
      -H "X-API-Key: $ZPLCLOUD_API_KEY" -H "Content-Type: application/json" \
      --data-binary @- -o label.tpcl

nc -q 1 192.168.1.60 9100 < label.tpcl

Los archivos con varias etiquetas se convierten en un único trabajo con varias etiquetas; la cabecera X-ZplCloud-Label-Count indica cuántas. Todos los campos y los comandos exactos de cada lenguaje están en la referencia de la API.


Imprimir a diario: zplCloud CLI, carpetas vigiladas e impresoras remotas

nc sirve para una prueba. Para imprimir a diario, la zplCloud CLI gratuita se ocupa de lo único que importa con estos trabajos: contienen datos de imagen binarios y tienen que llegar a la impresora byte a byte - sin codificación de texto y sin un salto de línea añadido al final. La CLI lo hace por la red, por USB, desde una carpeta vigilada y, a través de su agente, hacia impresoras de otras redes.

Enviar un trabajo terminado - sin necesidad de cuenta:

zplcloud send --target 192.168.1.50 --file label.tspl
zplcloud send --usb --file label.bin      # Brother QL por USB

La CLI reconoce las extensiones de archivo que usan las herramientas (.tspl, .epl, .dpl, .sbpl, .cpcl, .escpos, .bin, .pcl, .ezp, .tpcl, .jscript) y los envía sin cambios; --raw hace lo mismo con cualquier otro archivo.

Convertir y enviar en un solo paso - la CLI llama a la API por ti:

zplcloud send --target 192.168.1.50 --file label.zpl --language tspl --dpi 300 --compress

Carpeta vigilada: el ERP sigue escribiendo ZPL. El agente (zplcloud proxy) vigila una carpeta y convierte cada archivo ZPL al lenguaje de la impresora antes de imprimirlo. El software que genera las etiquetas no cambia en absoluto - sigue escribiendo archivos ZPL, y la impresora TSC recibe TSPL:

{
  "name": "tsc-shipping",
  "enabled": true,
  "folder": "/labels/tsc",
  "pattern": "*.zpl",
  "targetHost": "192.168.1.50",
  "convert": { "language": "tspl", "dpi": 300, "compress": true }
}

Impresoras remotas: desde la nube a una impresora en otra red. El agente mantiene una única conexión saliente con zplCloud, de modo que se puede llegar a una impresora de otro almacén, de una tienda o de un cliente sin abrir ningún puerto. Tu software llama a un único endpoint - con un trabajo terminado, o con el ZPL y el lenguaje:

curl -X POST https://api.zplcloud.com/v1/remote-printers/4/raw \
  -H "X-API-Key: $ZPLCLOUD_API_KEY" -H "Content-Type: application/json" \
  -d '{"zpl": "^XA^FO50,50^A0N,40,40^FDHello TSC^FS^XZ", "language": "tspl", "dpi": 203}'

El agente reenvía el trabajo por TCP 9100 o USB e informa de si ha llegado.

Adónde va el trabajoComando o endpoint
Impresora en la red localzplcloud send --target <ip> --file label.tspl
Impresora USBzplcloud send --usb --file label.bin
Archivos ZPL del ERP, la tienda online o el software de transportistascarpeta vigilada con "convert": { "language": "tspl" }
Impresora en otra redPOST /v1/remote-printers/{id}/raw o zplcloud send --remote-printer <id>
Carpeta vigilada a través de la APIPOST /v1/print/folder con language o base64

Necesitas la CLI y el agente en la versión 1.2.26 o posterior; las versiones anteriores leen cada archivo como texto y romperían los datos de imagen. Las impresoras por TCP ya funcionan a través de agentes desde la 1.2.22.


En qué hay que fijarse

  • La resolución tiene que coincidir. Una etiqueta renderizada para 203 dpi sale aproximadamente un tercio más pequeña en una impresora de 300 dpi. Las herramientas solo ofrecen resoluciones que existen en cabezales reales, de modo que el tamaño se mantiene 1:1 - elige la de tu impresora.
  • Los ajustes de medio se quedan en la impresora. Los trabajos no sobrescriben a propósito los ajustes guardados de hueco, sensor o marca negra. Configura la impresora una vez para el tamaño de etiqueta, igual que para cualquier otro trabajo.
  • Los códigos de barras se escanean como el original. Un código de barras en mapa de bits tiene exactamente el ancho que le dio ZPL, porque las barras ya eran puntos enteros. Eso solo se cumple a la resolución correcta - otro motivo para elegir los dpi de la impresora.
  • Imprime una etiqueta de prueba por modelo. Las versiones de firmware difieren en detalles: cómo leen las imágenes PCX, el origen de la imagen en las impresoras Easy Plug, el ajuste de la cinta en Toshiba. Las herramientas muestran estas notas junto a cada trabajo.
  • Brother necesita el modelo. El ancho del cabezal, los márgenes y el medio proceden de la referencia de comandos de Brother; la etiqueta se centra en el medio más estrecho en el que cabe. Las rotuladoras de cinta P-touch imprimen en sentido transversal a la cinta.
  • Si una impresora habla ZPL de forma nativa, envía ZPL. Ocupa menos y la impresora puede usar sus propias fuentes. La vía del mapa de bits es para las impresoras que no pueden - o para las etiquetas en las que "casi idéntico" no es suficiente.

¿Cuándo basta con una emulación?

Si la etiqueta consta de unas pocas líneas de texto latino y un Code 128, y la impresora tiene emulación ZPL, pruébala primero. En cuanto entran en juego texto Unicode, fuentes TrueType, logotipos, bloques de texto ^FB o una flota mixta, el mapa de bits es la opción más segura: un renderizado, un resultado, en todas las impresoras.


Preguntas frecuentes

¿Necesita la impresora un firmware especial?

No. Los trabajos solo usan los comandos gráficos estándar de cada lenguaje, que entiende cualquier impresora de esa familia.

¿Se pueden seguir escaneando los códigos de barras?

Sí. Los códigos de barras los dibuja el motor de zplCloud con anchos de punto exactos y se imprimen punto por punto. Si quieres asegurarte, compruébalos con Comprobar código de barras.

¿El texto sigue siendo texto en la impresora?

No. La impresora recibe una imagen. Precisamente de eso se trata - ninguna fuente de la impresora puede alterar el diseño -, pero también significa que la impresora no puede rellenar contadores ni campos por sí misma. En su lugar, renderiza una etiqueta por registro de datos; la API lo hace en una sola llamada para archivos con muchas etiquetas.

Nuestro software solo puede escribir archivos ZPL. ¿Puede imprimir igualmente en una impresora TSC o Brother?

Sí. Haz que escriba en una carpeta vigilada del agente de zplCloud con "convert": { "language": "tspl" } (o brother, dpl …). El agente convierte cada archivo antes de imprimirlo, y el software nunca se entera de que la impresora no es una Zebra.

¿Qué pasa con las impresoras de 180 dpi?

Son compatibles donde existen: ESC/POS a 180 dpi para la serie Epson TM-T88, y los modelos Brother P-touch a 180 y 360 dpi.

¿Es gratis?

Las herramientas web son gratuitas y no requieren cuenta, con límites de uso razonable para el uso anónimo. A través de la API, cada etiqueta cuenta como un renderizado; consulta los precios.


Pruébalo con tu propia etiqueta: elige tu impresora en las herramientas, pega el ZPL y envía el resultado al puerto 9100. Si gestionas una flota mixta, la plataforma zplCloud reúne los diseños en un solo lugar - y las herramientas de impresora se encargan de que cada impresora reciba la misma etiqueta.

Más artículos