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

ComandoCódigo
^BCCode 128. O código linear das etiquetas de transporte: aceita letras e números, e é o que a maioria das transportadoras usa.
^BQQR Code. Quadrado, guarda muito mais dado, e é o que costuma levar a URL de rastreio.
^BXData 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^FS

A 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çãoO que significa
NOrientação. N é normal, R gira 90 graus.
120Altura das barras, em pontos.
YImprime o número embaixo do código. N esconde.
NPõe o número acima em vez de abaixo.
NPediria 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.

← Todos os guias