Código de barras em ZPL: ^BC, ^BQ e por que o leitor não lê
Os três códigos que aparecem em etiqueta de transporte, o comando que define a largura das barras, e as duas causas de um código que sai bonito no PDF e não passa no leitor.
Os três que você vai encontrar
| Comando | Código |
|---|---|
| ^BC | Code 128. O código linear das etiquetas de transporte: aceita letras e números, e é o que a maioria das transportadoras usa. |
| ^BQ | QR Code. Quadrado, guarda muito mais dado, e é o que costuma levar a URL de rastreio. |
| ^BX | Data Matrix. Também quadrado, comum em etiqueta pequena de peça e em farmacêutico. |
Os três renderizam na conversão, e testamos os três. Existem outros no manual da Zebra, mas fora desses a chance de você encontrar um é baixa.
A anatomia de um Code 128
Um código de barras completo são duas linhas, e elas são inseparáveis:
^BY3
^FO50,50^BCN,120,Y,N,N
^FD7891234567895^FSA primeira define a espessura das barras. A segunda posiciona e descreve o código. E o ^FD traz o conteúdo, como em qualquer outro campo: o código de barras não guarda o próprio dado, ele desenha o que o ^FD mandar.
Os cinco valores do ^BC, na ordem:
| Posição | O que significa |
|---|---|
| N | Orientação. N é normal, R gira 90 graus. |
| 120 | Altura das barras, em pontos. |
| Y | Imprime o número embaixo do código. N esconde. |
| N | Põe o número acima em vez de abaixo. |
| N | Pediria um dígito verificador. Medimos: neste renderizador não muda nada. |
^BY é o comando que mais se esquece
^BY define a largura da barra mais fina, e é ela que decide o tamanho final do código. Sem ^BY nenhum, o resultado é o mesmo de ^BY2: testamos as duas versões e a saída é idêntica byte a byte.
O que pega: ^BY vale do ponto onde aparece até o fim da etiqueta, não só para o código seguinte. Num arquivo com dois códigos de tamanhos diferentes, o segundo sai com a espessura do primeiro se ninguém repetir o comando. Testamos isso também: repetir ^BY antes do segundo muda o desenho.
Por que o código não lê depois de imprimir
O código aparece perfeito na tela, sai no PDF, imprime, e o leitor não reconhece. Quase sempre é uma destas duas causas, e nenhuma delas está no arquivo ZPL.
Densidade errada. Se o arquivo foi escrito para 203 dpi e você converteu em 300, todo o desenho encolhe na mesma proporção, inclusive a barra mais fina. Um código que tinha 0,25 mm de barra passa a ter 0,17 mm, e aí depende do leitor: alguns leem, muitos não. O sintoma característico é o código funcionar num leitor e falhar em outro.
A impressora doméstica não tem resolução para aquela barra. Impressora térmica de etiqueta é feita para isso; jato de tinta e laser comum borram a borda da barra o suficiente para o leitor errar. Aumentar o ^BY de 2 para 3 resolve na maior parte dos casos, porque barra mais grossa perdoa mais borrão.
Antes de culpar o arquivo
Abra o PDF e dê zoom no código. Se as barras estão nítidas e separadas, o arquivo está certo e o problema é impressão ou leitor. Se já estão cinzentas ou grudadas na tela, o problema é densidade, e o caminho é o guia sobre 203, 300 e 600 dpi.
Um teste que vale os dez segundos: leia o código direto da tela com o leitor, sem imprimir. Se lê na tela e não no papel, você isolou o problema na impressão.