ZPLToolkit

Solução de problemas

O dado do ^FD não aparece na etiqueta

Um campo cujo dado nunca imprime normalmente está sem o ^FS, carrega um acento circunflexo no dado, ou está desenhando branco no branco.

O ^FS que falta

O ^FD começa o dado do campo e o ^FS encerra o campo. Sem o ^FS, tudo o que vem depois — inclusive os comandos do campo seguinte — é engolido como dado do campo que nunca fechou.

^XA
^FO50,50^A0N,40,40^FDRemessa 4821
^FO50,120^A0N,40,40^FDProxima linha^FS
^XZ
O primeiro campo nunca fecha, então os comandos do segundo viram parte do dado dele.

O sintoma raramente é um campo faltando. Costuma ser um campo imprimindo uma sequência longa de sem-sentido e todo o resto sumido, porque a impressora está tratando uma dúzia de comandos como texto.

Um ^ ou ~ dentro do dado

O ^ e o ~ começam comandos, e a impressora não para de procurá-los dentro do ^FD. Um preço escrito como R$ 100^Reais encerra o campo no circunflexo e lê ^Re como comando, então o campo imprime truncado e algo inesperado acontece em seguida.

^XA
^FO50,50^A0N,40,40^FDR$ 100^Reais^FS
^XZ
O circunflexo encerra o campo. Só o que veio antes dele imprime.

A solução é o ^FH, que liga escapes hexadecimais no campo: um sublinhado seguido de dois dígitos hexadecimais representa aquele byte, então _5E é um circunflexo literal. A outra opção, se o dado é seu para controlar, é não pôr caracteres de controle nele — que costuma ser a resposta melhor quando o valor vem de um banco de dados.

^XA
^FO50,50^FH^A0N,40,40^FDR$ 100_5EReais^FS
^XZ
O ^FH transforma _5E num circunflexo literal, e o valor inteiro imprime.

Imprimindo branco no branco

O ^FR inverte um campo contra o que está atrás dele, e o ^LR faz o mesmo para um formato inteiro. Um campo invertido sobre uma caixa preta imprime branco e é exatamente o que se quer; o mesmo campo sobre a etiqueta em branco imprime branco no branco e é invisível.

É a suspeita certa quando um campo sumiu depois de alguém acrescentar uma faixa preta ao desenho e ligar o ^LR — todo campo depois da faixa inverteu junto, porque o ^LR vale até o fim do formato, a não ser que seja desligado.

Acentos que somem

Se o que falta são especificamente os caracteres acentuados, isso é questão de codificação, não de campo. O ^CI28 põe a impressora em UTF-8, que é o que a maioria dos sistemas envia, e sem ele um byte fora do ASCII é interpretado contra a página de código em que a impressora estiver.

O sintoma varia conforme o tamanho do erro: às vezes um glifo trocado, às vezes nada. De todo jeito, um ^CI28 perto do topo do formato é a solução.

Conferir o campo no validador

O campo sem fechamento acima, carregado e pronto. O validador aponta o ^FD que nunca recebeu o ^FS, com a posição do campo que abriu.

Conferir o campo no validador

Perguntas frequentes

Onde exatamente vai o ^FS?
Imediatamente depois do dado, encerrando o campo: ^FO50,50^A0N,40,40^FDtexto^FS. Todo campo precisa de um, e o linter aponta os que não têm, com linha e coluna do ^FD que os abriu.
Como imprimo um ^ ou um ~ literal?
Ligue o ^FH no campo e escreva o caractere como sublinhado mais o código hexadecimal — _5E para ^ e _7E para ~. Não há como imprimir nenhum dos dois num ^FD comum.
Acentos saem com o glifo errado. É o mesmo problema?
É um problema aparentado: a impressora está decodificando seus bytes contra a página de código errada. Acrescente ^CI28 para pô-la em UTF-8, que é quase certamente o que o seu dado já é.

Comandos deste guia

Guias relacionados