Aprenda a programar impressoras térmicas de etiquetas PPLB

Para quem precisa imprimir em impressoras térmicas de etiquetas que utilizam a linguagem PPLB (Zebra, Argox, Elgin, etc), segue algumas dicas.

Vamos ver o lay-out da impressão de uma linha com 3 colunas:

N
D20
S3
A810,160,2,1,1,1,N,"Torta de Frango"
A810,140,2,3,1,1,N,"000132"
A810,115,2,3,1,1,N,"R$       3,90"
B570,020,0,2,3,5,65,N,"000132"

A540,160,2,1,1,1,N,"Sabonete Liquido"
A540,140,2,3,1,1,N,"001021"
A540,115,2,3,1,1,N,"R$       2,20"
B310,020,0,2,3,5,65,N,"01021"

A260,160,2,1,1,1,N,"Adaptador de Tomada"
A260,140,2,3,1,1,N,"006352"
A260,115,2,3,1,1,N,"R$       1,80"
B030,020,0,2,3,5,65,N,"006352"
P1

Vamos comentar para facilitar a interpretação:

N = Limpeza do Buffer
D20 = Densidade 20
S3 = Velocidade de impressão pol/segundos

Ap1,p2,p2,p3,p4,p5,p6,p7,"Dados" (veja tabela abaixo - Texto)
A810,160,2,1,1,1,N,"Torta de Frango"
A810,140,2,3,1,1,N,"000132"
A810,115,2,3,1,1,N,"R$       3,90" 

Bp1,p2,p2,p3,p4,p5,p6,p7,"Dados" (veja tabela abaixo - Barras)
B570,020,0,2,3,5,65,N,"000132"

P1 = determina a quantidade de cópias, 1 até 65.535

A – Campo de texto
Ap1,p2,p3,p4,p5,p6,p7,”Dados”
p1 – posição eixo X em pontos
p2 – posição eixo Y em pontos
p3 – rotação (0=normal,1=90graus,2=180graus,3=270graus)
p4 – tipo de fonte (1 a 5) consultar manual das fontes disponíveis
p5 – multiplicador horizontal das fontes
p6 – multiplicador vertical das fontes
p7 – N=imagem normal, ou R= imagem em reverso
“Dados” – dados a serem impressos

B – Código de barras
Bp1,p2,p3,p4,p5,p6,p7,p8,"Dados"
p1 – posição eixo X em pontos
p2 – posição eixo Y em pontos
p3 – rotação (0=normal,1=90graus,2=180graus,3=270graus)
p4 – tipo de código de barra consultar manual das fontes disponíveis
p5 – largura da barra estreita
p6 – largura da barra larga
p7 – altura do código de barras em pontos
p8 – impressão da linha de interpretação (B= sim, N= não)
"Dados" – dados a serem impressos
Agora que você já entendeu, vamos ver como vai ficar em Lazarus ou Delphi:

procedure TFormEtqL42.BtnImprimeETQ;
var
F : TextFile;
i : integer;
begin
   IF cPortaBARRAS = '' then
      begin
        ShowMessage('Verifique a configuração da porta da impressora de etiqueta');
        Exit;
      end;
   AssignFile(F,cPortaBARRAS);
   Rewrite(F);
   i := 0;
   TabGlobal.DETQ001.Last;
   TabGlobal.DETQ001.First;
   while not TabGlobal.DETQ001.eof do
      begin
         Writeln(F,'N');
         Writeln(F,'D20');
         Writeln(F,'S3');
         // Etiqueta 1
         Writeln(F,'A810,160,2,1,1,1,N,"'+TabGlobal.DETQ001.DESCRICAO.Conteudo+'"');
         Writeln(F,'A810,140,2,3,1,1,N,"'+TabGlobal.DETQ001.CODPRO.Conteudo+'"');
         Writeln(F,'A810,115,2,3,1,1,N,"'+TabGlobal.DETQ001.VALOR.Conteudo+'"');
         Writeln(F,'B570,020,0,2,3,5,65,N,"'+TabGlobal.DETQ001.BARRAS.Conteudo+'"');
         // Etiqueta 2
         TabGlobal.DETQ001.Next;
         Writeln(F,'A540,160,2,1,1,1,N,"'+TabGlobal.DETQ001.DESCRICAO.Conteudo+'"');
         Writeln(F,'A540,140,2,3,1,1,N,"'+TabGlobal.DETQ001.CODPRO.Conteudo+'"');
         Writeln(F,'A540,115,2,3,1,1,N,"'+TabGlobal.DETQ001.VALOR.Conteudo+'"');
         Writeln(F,'B310,020,0,2,3,5,65,N,"'+TabGlobal.DETQ001.BARRAS.Conteudo+'"');
         // Etiqueta 3
         TabGlobal.DETQ001.Next;
         Writeln(F,'A260,160,2,1,1,1,N,"'+TabGlobal.DETQ001.DESCRICAO.Conteudo+'"');
         Writeln(F,'A260,140,2,3,1,1,N,"'+TabGlobal.DETQ001.CODPRO.Conteudo+'"');
         Writeln(F,'A260,115,2,3,1,1,N,"'+TabGlobal.DETQ001.VALOR.Conteudo+'"');
         Writeln(F,'B030,020,0,2,3,5,65,N,"'+TabGlobal.DETQ001.BARRAS.Conteudo+'"');
         TabGlobal.DETQ001.Next;
         Writeln(F,'P1');
      end;
   CloseFile(F);
end;

Se gostou, compartilhe e ajude a divulgar meu trabalho. Obrigado!

* Créditos para parte do texto dos comandos para ArgoxBrasil

Comentários

Postagens mais visitadas deste blog

Compartilhando pastas no Windows 10

Provedores de acesso gratuito banda larga

Instalando Windows em Partições GPT