No artigo de hoje, vamos demonstrar em como imprimir uma etiqueta térmica (Zebra, Elgin, etc) usando AdvPL em uma distribuição Linux.
Observação antes do artigo, para esse exemplo, foi utilizado a distribuição Ubuntu e não foi usado a classe MSCBPrinter, mas sim a montagem do texto da etiqueta via código ( como no exemplo citado nesse artigo https://terminaldeinformacao.com/2020/02/26/desenhando-etiquetas-zebra-online-e-sem-custo/ ).
A lógica aqui é a seguinte:
- Monte o texto da sua etiqueta (no nosso exemplo será a variável cConteudo)
- Em seguida, vamos criar uma pasta na temporária do S.O. usando WaitRun e o comando mkdir (a pasta será por exemplo, /tmp/etiq/)
- Iremos gravar o arquivo dentro dessa pasta do passo 2 com o nome imprimir.txt, sendo que iremos substituir o CRLF por \n. E para gravar o arquivo iremos usar o comando echo
- Por último será feito a impressão via comando lp, nesse ponto tenha atenção no nome da impressora, pois é necessário informar, nesse exemplo é a Bar-Code-Printer-TT042-50
Abaixo o código fonte de exemplo conforme a lógica acima:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function zTstEtiq Exemplo de impressão de etiqueta térmica em uma distribuição Linux @type Function @author Atilio @since 15/11/2022 /*/ User Function zTstEtiq() Local aArea := FWGetArea() Local cConteudo := "" Local cPasta := "" Local cArquivo := "" Local cComando := "" //Monte a sua etiqueta cConteudo := "" cConteudo += "^XA" + CRLF cConteudo += "" + CRLF cConteudo += "^CF0,60" + CRLF cConteudo += "^FO220,50^FDAtilio Sistemas^FS" + CRLF cConteudo += "^CF0,30" + CRLF cConteudo += "^FO220,115^FDEtiqueta de Teste^FS" + CRLF cConteudo += "^FO220,155^FDatiliosistemas.com^FS" + CRLF cConteudo += "^FO50,250^GB700,3,3^FS" + CRLF cConteudo += "" + CRLF cConteudo += "^XZ" + CRLF //Cria a pasta na temporária do linux cPasta := GetTempPath() + "etiq/" WaitRun("mkdir " + cPasta) //Gera o arquivo da etiqueta cArquivo := "imprimir.txt" cConteudo := StrTran(cConteudo, CRLF, "\n") cComando := ' -e "' + cConteudo + '" > ' + cPasta + cArquivo ShellExecute("open", "/usr/bin/echo", cComando, "/", 1 ) //Manda imprimir a etiqueta cComando := " -d Bar-Code-Printer-TT042-50 -o raw " + cPasta + cArquivo ShellExecute("open", "/usr/bin/lp", cComando, "/", 1 ) FWRestArea(aArea) Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.