Códigos de barras en ZPL: ^BC, ^BQ y por qué el lector no los lee
Los tres códigos que aparecen en etiquetas de transporte, el comando que fija el grosor de las barras, y las dos causas de un código que sale perfecto en el PDF y falla en el lector.
Los tres que te vas a encontrar
| Comando | Código |
|---|---|
| ^BC | Code 128. El código lineal de las etiquetas de transporte: admite letras y números, y es el que usan la mayoría de los transportistas. |
| ^BQ | Código QR. Cuadrado, guarda mucho más dato, y suele llevar la URL de seguimiento. |
| ^BX | Data Matrix. También cuadrado, común en etiquetas pequeñas de pieza y en farmacéutico. |
Los tres se renderizan al convertir, y probamos los tres. El manual de Zebra lista otros, pero fuera de estos las probabilidades de encontrarte uno son bajas.
La anatomía de un Code 128
Un código de barras completo son dos líneas, y son inseparables:
^BY3
^FO50,50^BCN,120,Y,N,N
^FD7891234567895^FSLa primera fija el grosor de las barras. La segunda coloca y describe el código. Y el ^FD trae el contenido, igual que en cualquier otro campo: el código de barras no guarda su propio dato, dibuja lo que le pase el ^FD.
Los cinco valores del ^BC, en orden:
| Posición | Qué significa |
|---|---|
| N | Orientación. N es normal, R lo gira 90 grados. |
| 120 | Alto de las barras, en puntos. |
| Y | Imprime el número debajo del código. N lo oculta. |
| N | Pone el número encima en lugar de debajo. |
| N | Pediría un dígito de control. Lo medimos: aquí no cambia nada. |
^BY es el comando que más se olvida
^BY fija el ancho de la barra más fina, y eso es lo que decide el tamaño final del código. Sin ningún ^BY, el resultado coincide con ^BY2: renderizamos las dos versiones y la salida es idéntica byte a byte.
Aquí está la trampa: ^BY vale desde donde aparece hasta el final de la etiqueta, no solo para el código siguiente. En un archivo con dos códigos de tamaños distintos, el segundo sale con el grosor del primero si nadie repite el comando. También lo probamos: repetir ^BY antes del segundo cambia el dibujo.
Por qué el código no se lee después de imprimir
El código se ve perfecto en pantalla, llega al PDF, se imprime, y el lector lo rechaza. Casi siempre es una de estas dos causas, y ninguna vive en el archivo ZPL.
Densidad equivocada. Si el archivo se escribió para 203 dpi y lo convertiste a 300, todo el dibujo encoge en la misma proporción, barra más fina incluida. Un código cuya barra medía 0,25 mm pasa a medir 0,17 mm, y a partir de ahí depende del lector: algunos lo leen, muchos no. El síntoma característico es un código que funciona en un lector y falla en otro.
La impresora de oficina no tiene resolución para esa barra. Una impresora térmica de etiquetas está hecha para esto; las de tinta y láser corrientes difuminan el borde de la barra lo suficiente para que el lector se equivoque. Subir el ^BY de 2 a 3 arregla la mayoría de los casos, porque una barra más gruesa perdona más difuminado.
Antes de culpar al archivo
Abre el PDF y haz zoom en el código. Si las barras se ven nítidas y separadas, el archivo está bien y el problema es la impresión o el lector. Si ya se ven grises o pegadas en pantalla, el problema es la densidad, y el camino es la guía sobre 203, 300 y 600 dpi.
Una prueba que vale los diez segundos: lee el código directamente de la pantalla, sin imprimir. Si se lee en pantalla y no en papel, ya aislaste el problema en la impresión.