Impressora Zebra TLP 2844: Como integrar seu sistema com a impressora

Veja nesse artigo alguns conceitos de como integrar seu sistema, imprimir em impressoras zebra TLP 2844, exportar a etiqueta para arquivo e editar as configurações.

Muitos programadores iniciantes têm dificuldade de entender como funciona a impressão de etiquetas de código de barras em impressoras térmicas. Neste artigo irei explicar de forma simples como desenhar e enviar comandos para a impressora. O Modelo usado neste exemplo é Zebra TLP 2844.

Primeiro passo é instalar o software ZebraDesigner, no cd-rom que acompanha a impressora. Agora é só configurar as medidas da etiqueta. Clique no menu Arquivo depois em na opção Configuração da etiqueta. Informe a largura e a altura da etiqueta, Margens, número de Linhas e número de colunas.

Agora usando as ferramentas de desenho desenho seu modelo de etiqueta, informado o Nome da Empresa, o código de barras, preço e descrição do produto.

Após desenhar a etiqueta o próximo passo é exportar a etiqueta para arquivo texto. Clique no menu Arquivo e escolha a opção imprimir. Depois marque a opção imprimir para arquivo. Informe o número de etiquetas a serem impressas, para facilitar a configuração informe 3 etiquetas. Escolha uma pasta e dê um nome para o arquivo. Pronto!

O próximo passo agora é editar o arquivo texto gerado. Substituindo o texto fixo por variáveis, neste exemplo irei substituir os textos fixos dos campos por [CODBARRAS], [DESCRICAO] e [PRECO].

Exemplo de arquivo texto gerado antes de ser editado:

Q320,019 q831 rN S4 D7 ZT JB OD R56,0 N A105,45,2,3,1,1,N,"110,00" A219,40,2,1,1,1,N,"A Vista R$" A227,103,2,2,1,1,N,"CALCINHA DE RENDA" A146,151,2,3,1,1,N,"12563" A166,277,2,2,1,1,N,"DEVMEDIA" B57,154,0,2,2,5,72,N,"123456" A345,45,2,3,1,1,N,"110,00" A459,40,2,1,1,1,N,"A Vista R$" A467,103,2,2,1,1,N,"CALCINHA DE RENDA" A386,151,2,3,1,1,N,"12563" A406,277,2,2,1,1,N,"DEVMEDIA" B297,154,0,2,2,5,72,N,"123456" A585,45,2,3,1,1,N,"110,00" A699,40,2,1,1,1,N,"A Vista R$" A707,103,2,2,1,1,N,"CALCINHA DE RENDA" A626,151,2,3,1,1,N,"12563" A646,277,2,2,1,1,N,"DEVMEDIA" B537,154,0,2,2,5,72,N,"123456" P1

Arquivo depois de Editado:

// Cabeçalho da Etiqueta Q320,019 q831 rN S4 D7 ZT JB OD R56,0 N // Coluna 1 A105,45,2,3,1,1,N,"[PRECO]" A219,40,2,1,1,1,N,"A Vista R$" A227,103,2,2,1,1,N,"[DESCRICAO]" A146,151,2,3,1,1,N,"[CODBARRAS]" A166,277,2,2,1,1,N,"DEVMEDIA" B57,154,0,2,2,5,72,N,"[CODBARRAS]" // Coluna 2 A345,45,2,3,1,1,N,"[PRECO]" A459,40,2,1,1,1,N,"A Vista R$" A467,103,2,2,1,1,N,"[DESCRICAO]" A386,151,2,3,1,1,N,"[CODBARRAS]" A406,277,2,2,1,1,N,"DEVMEDIA" B297,154,0,2,2,5,72,N,"[CODBARRAS]" // Coluna 3 A585,45,2,3,1,1,N,"[PRECO]" A699,40,2,1,1,1,N,"A Vista R$" A707,103,2,2,1,1,N,"[DESCRICAO]" A626,151,2,3,1,1,N,"[CODBARRAS]" A646,277,2,2,1,1,N,"DEVMEDIA" B537,154,0,2,2,5,72,N,"[CODBARRAS]" // Rodapé da Etiqueta P1

Observando o arquivo gerado a primeira coluna representa a posição X do campo a ser impresso, variando 240 entre uma etiqueta e outra no exemplo assima comeca com A105 e a próximo A345. Agora entendendo a lógica, fica fácil montar um algorítimo para impressão.

Agora segue abaixo um exemplo de como gerar o arquivo e enviar para impressora:

Var vetq; s,c,c1:String; pi,pf,i:integer; f:textfile; begin vetq := TStringList.create; vetq.clear; // Cabeçalho da Etiqueta vetq.Add('Q320,019'); vetq.Add('q831'); vetq.Add('rN'); vetq.Add('S4'); vetq.Add('D7'); vetq.Add('ZT'); vetq.Add('JB'); vetq.Add('OD'); vetq.Add('R56,0'); vetq.Add('N'); // Coluna 1 vetq.Add('A105,45,2,3,1,1,N,"[PRECO]"'); vetq.Add('A219,40,2,1,1,1,N,"A Vista R$"'); vetq.Add('A227,103,2,2,1,1,N,"[DESCRICAO]"'); vetq.Add('A146,151,2,3,1,1,N,"[CODBARRAS]"'); vetq.Add('A166,277,2,2,1,1,N,"DEVMEDIA"'); vetq.Add('B57,154,0,2,2,5,72,N,"[CODBARRAS]"'); // Coluna 2 vetq.Add('A345,45,2,3,1,1,N,"[PRECO]"'); vetq.Add('A459,40,2,1,1,1,N,"A Vista R$"'); vetq.Add('A467,103,2,2,1,1,N,"[DESCRICAO]"'); vetq.Add('A386,151,2,3,1,1,N,"[CODBARRAS]"'); vetq.Add('A406,277,2,2,1,1,N,"DEVMEDIA"'); vetq.Add('B297,154,0,2,2,5,72,N,"[CODBARRAS]"'); // Coluna 3 vetq.Add('A585,45,2,3,1,1,N,"[PRECO]"'); vetq.Add('A699,40,2,1,1,1,N,"A Vista R$"'); vetq.Add('A707,103,2,2,1,1,N,"[DESCRICAO]"'); vetq.Add('A626,151,2,3,1,1,N,"[CODBARRAS]"'); vetq.Add('A646,277,2,2,1,1,N,"DEVMEDIA"'); vetq.Add('B537,154,0,2,2,5,72,N,"[CODBARRAS]"'); // Rodapé da Etiqueta vetq.Add('P1'); // substitui as variáveis delimitadas por [] pelo conteúdo do campo for i:=0 to vetq.count - 1 do begin s := etq.strings[i]; pi := pos('[', s); pf := pos(']', s); while pi > 0 do begin c := copy(s, pi + 1, pf - pi - 1); c1 := sqlProdutos.FieldByName(c).AsString; s := StringReplace(s, '[' + c + ']', c1, [rfReplaceAll]); pi := pos('[', s); pf := pos(']', s); end; vetq.strings[i] := s; end; // gera arquivo texto com o conteúdo que será enviado para a impressora vetq.SaveToFile('c:\etiqueta.txt'); // criar um arquivo .bat para enviar o arquivo texto gerado para a impressora atraves da porta LPT1 // usando o comando type do DOS if not FileExists('C:\PRINTLBL.BAT') then begin AssignFile(F, 'C:\PRINTLBL.BAT'); try Rewrite(F); Writeln(F, 'TYPE C:\ETIQUETA.TXT > LPT1'); finally CloseFile(F); end end; ShellExecute(0, 'Open', PChar('C:\PRINTLBL.BAT'), nil, nil, Ord(SW_HIDE)); // Para usar USB tem que compartilhar a impressora e enviar o arquivo para o compartilhamento // Ex: Type c:\etiqueta.txt > \\computador\impressora end;

Artigos relacionados