¿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 por | Qué es |
|---|---|
| ^XA | ZPL. Lo que el conversor espera. |
| N, q o Q seguidos de números | EPL, el lenguaje anterior de Zebra. |
| Ya es un PDF con la extensión cambiada. Renómbralo y ábrelo. | |
| PK y caracteres ilegibles | Es un ZIP. Descomprímelo y mira qué hay dentro. |
| { o <?xml | Es 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"
P1Ni 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.