¿El archivo del transportista es ZPL de verdad? Cómo saberlo en diez segundos

No todo archivo de etiqueta es ZPL. Puede ser EPL, un PDF con la extensión cambiada o un JSON con el ZPL escondido dentro. Cada uno se delata en la primera línea.

El síntoma

Subes el archivo y la respuesta es "no se encontraron etiquetas en el archivo". El conversor no está siendo quisquilloso: buscó un bloque ^XA … ^XZ y no encontró ninguno. El archivo puede estar perfecto y sencillamente no ser ZPL.

Pasa más de lo que parece, porque "archivo de etiqueta" se ha convertido en el nombre de cuatro cosas distintas, y la extensión no ayuda: .txt, .prn, .lbl y .zpl se usan para todas ellas.

Ábrelo en un editor de texto y lee la primera línea

El Bloc de notas sirve, VS Code sirve, cualquiera que muestre el contenido en crudo. La primera línea delata el formato:

Empieza porQué es
^XAZPL. Lo que el conversor espera.
N, q o Q seguidos de númerosEPL, el lenguaje anterior de Zebra.
%PDFYa es un PDF con la extensión cambiada. Renómbralo y ábrelo.
PK y caracteres ilegiblesEs un ZIP. Descomprímelo y mira qué hay dentro.
{ o <?xmlEs la respuesta de una API, con la etiqueta en algún campo.

EPL: el lenguaje que parece ZPL y no lo es

Esta es una etiqueta EPL completa:

N
A50,50,0,3,1,1,N,"Pedido 1234"
P1

Ni un acento circunflejo, comandos de una sola letra, texto entre comillas. Es el lenguaje que usaba Eltron antes de que Zebra comprara la empresa, y sigue vivo en modelos de impresora más antiguos.

Muchas impresoras Zebra entienden los dos lenguajes y cambian solas, y por eso el archivo "siempre funcionó" en la impresora y aquí no se convierte. El conversor habla ZPL, y un archivo EPL devuelve exactamente el error de "no se encontraron etiquetas". Lo probamos.

No hay conversión automática entre los dos: son lenguajes distintos, con modelos de posicionamiento distintos. El camino es pedir la etiqueta en ZPL a quien la emite, y casi siempre es solo una opción en el sistema de origen.

ZPL escondido dentro de un JSON

Si la etiqueta viene de una API de transportista o de marketplace, es habitual que el archivo sea un JSON con el ZPL en un campo, a veces codificado en base64 para que sobreviva al viaje por la red.

La señal es un archivo que empieza por { y tiene un campo llamado algo así como "label", "content" o "data". Si ese valor es legible y empieza por ^XA, basta con copiar ese trozo a un archivo nuevo. Si es un bloque largo de letras y números sin sentido, es base64 y hay que decodificarlo antes.

Vale la pena preguntar a quien montó la integración: casi toda API tiene un parámetro de formato, y pedir la etiqueta ya en ZPL puro elimina el paso.

Cuando es ZPL y aun así falla

Si la primera línea tiene ^XA y el error sigue, quedan dos posibilidades. La primera es que no haya ^XZ cerrando la etiqueta, yla guía sobre por qué una etiqueta no llega al PDF cubre ese caso y lo peor que hace, que es desaparecer en silencio cuando hay otras etiquetas en el archivo.

La segunda es basura antes del primer ^XA, que ocurre cuando alguien copia desde una terminal o un correo. Todo lo que queda fuera de un par ^XA … ^XZ se descarta, así que este caso suele resolverse solo, pero conviene comprobar que el primer ^XA llegó entero.

← Todas las guías