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.