Os comandos ZPL que você vai encontrar de verdade
O manual da Zebra tem mais de duzentos comandos. Uma etiqueta de transportadora usa menos de vinte. Esta é a lista deles, com o que cada um faz e o erro que cada um costuma causar.
A etiqueta mínima
Toda etiqueta ZPL tem a mesma moldura: abre, descreve campos, fecha. Esta é a menor que faz alguma coisa:
^XA
^CI28
^FO50,50^A0N,40,40^FDPedido 1234^FS
^XZQuatro linhas, e cada uma tem um papel: abrir, dizer que o arquivo é UTF-8, desenhar um texto numa posição, fechar. Tudo o mais é variação disso.
O detalhe que mais confunde quem chega: todas as medidas do ZPL são em pontos, não em milímetros. Quantos pontos há num milímetro depende da densidade da impressora, e é por isso que existe um guia só sobre densidade.
Estrutura
| Comando | O que faz |
|---|---|
| ^XA | Abre uma etiqueta. Toda etiqueta começa aqui. |
| ^XZ | Fecha a etiqueta. Sem ele, a etiqueta se perde em silêncio. |
| ^CI28 | Diz que o texto do arquivo está em UTF-8. Sem ele, acento vira caractere estranho. |
| ^FS | Fecha um campo. Faltou um, o campo seguinte é engolido como se fosse texto. |
| ^FX | Comentário. Ignorado na conversão, útil para quem lê o arquivo depois. |
| ^LH | Desloca a origem da etiqueta inteira. Prático para corrigir margem sem mexer em cada campo. |
Posição e texto
| Comando | O que faz |
|---|---|
| ^FO x,y | Posiciona o próximo campo, contando do canto superior esquerdo, em pontos. |
| ^FT x,y | Posiciona pela linha de base do texto em vez do topo. Útil para alinhar textos de tamanhos diferentes. |
| ^A0 o,a,l | Fonte escalável. O primeiro valor é a orientação (N, R, I, B), depois altura e largura em pontos. |
| ^FD | O conteúdo do campo: o que vai aparecer impresso. |
| ^FB l,n,e,j,r | Bloco de texto com quebra automática: largura, número de linhas, espaço entre elas, alinhamento. |
A orientação do ^A0 é a que gira texto de verdade. ^A0N é normal e ^A0R gira 90 graus, e testamos os dois.
Desenho e códigos de barras
| Comando | O que faz |
|---|---|
| ^GB l,a,e | Desenha um retângulo. Com altura 1 ou largura 1, vira uma linha divisória. |
| ^BY l,p,a | Define largura da barra, proporção e altura para os códigos seguintes. O padrão equivale a ^BY2. |
| ^BC | Code 128, o código de barras linear das etiquetas de transporte. |
| ^BQ | QR Code. |
| ^BX | Data Matrix. |
| ^GFA | Imagem embutida, ponto a ponto. É o que carrega logotipo dentro do arquivo. |
^BY vale do ponto onde aparece até o fim da etiqueta, e não só para o código seguinte. Num arquivo com dois códigos de tamanhos diferentes, é preciso repetir ^BY antes do segundo.
Os que você pode ignorar ao converter
Alguns comandos que aparecem com frequência não fazem nada num PDF, porque descrevem a máquina e não o desenho: ^PQ (cópias), ^PW e ^LL (tamanho), ^MD (escuridão), ^PR (velocidade), ^PO (orientação do papel).
Nenhum deles é erro no arquivo, e nenhum muda o que sai da conversão. O guia sobre comandos ignorados explica o porquê de cada um, com o que medimos.
Como ler um arquivo que você não escreveu
A ordem de leitura que funciona: procure os ^XA para saber quantas etiquetas existem, depois leia um bloco inteiro de cima a baixo. Cada ^FS marca o fim de um elemento, então contar ^FS dá o número de coisas desenhadas.
Dentro de um bloco, os pares ^FO e ^FD são o esqueleto: um diz onde, o outro diz o quê. Um ^FD sem ^FO antes não herda a posição do campo anterior, como parece intuitivo: ele vai para o canto superior esquerdo. Testamos, e é o mesmo canto onde vai parar um campo cujo ^FO foi digitado errado.