Um par, uma etiqueta
^XA não tem parâmetro nenhum: são dois caracteres e pronto. O mesmo vale para ^XZ. O que eles delimitam é um formato de etiqueta completo, e a impressora só começa a desenhar quando recebe o ^XZ — até lá está acumulando instruções.
Por isso um arquivo com cinquenta pares ^XA…^XZ são cinquenta etiquetas, uma atrás da outra. Não existe comando de “próxima etiqueta”: o próximo ^XA é o comando de próxima etiqueta.
- ^XA — abre o formato. Sem parâmetros.
- ^XZ — fecha o formato e imprime. Sem parâmetros.
- ^PQ — dentro do par, define quantas cópias daquela etiqueta imprimir.
- Um ^XZ faltando no fim do arquivo ainda renderiza aqui, mas a impressora esperaria por ele.
Por que saíram menos páginas do que blocos ^XA
Um bloco que não desenha nada é manutenção de impressora, não uma etiqueta. ^XA^MCY^XZ limpa o bitmap; ^XA^IDR:ARQ.GRF^FS^XZ apaga um arquivo da memória. Nenhum dos dois produz imagem, e transformá-los em página em branco faria um arquivo de cinquenta etiquetas virar cem páginas, metade delas vazias.
Então esses blocos são descartados de propósito. Um bloco que tentou desenhar é mantido mesmo se sair em branco — a diferença é ter tentado, não o resultado.
O que costuma vir logo depois do ^XA
Os comandos que valem para a etiqueta inteira ficam no começo, porque afetam tudo que vem depois: ^PW e ^LL definem o tamanho, ^CI28 define a codificação dos acentos, ^LH move a origem, ^BY define o padrão dos códigos de barras.
Se o acento da sua etiqueta está saindo errado, é aqui que falta alguma coisa: um ^CI28 logo depois do ^XA resolve, e colocá-lo no meio da etiqueta só afeta os campos dali para frente.