Tempo aproximado para leitura: 00:04:00 min
Dúvida
Preciso imprimir código QRCODE em impressora térmica.
Ambiente
Protheus – ADVPL – A partir da versão 11.80
Solução
As funções de impressão térmica (MSCB) não possuem um parâmetro para impressão de códigos 2D (QRCode e DataMatrix), todavia tivemos um situação onde foi realizado um tratamento para auxiliar o cliente quanto a isso, porém está foi somente uma forma de tratamento que deve ser testado e avaliado se cabe a regra e necessidade que está sendo implementada.
A impressora que utilizamos no teste é uma ZEBRA modelo S600. Para gerar o QRCODE utilizamos a função FwQrCode.
FWQRCODE
Por padrão o QRCode gerado é gravado como imagem na pasta TEMP do próprio Windows, em debug da função poderá ser visualizado no objeto uma propriedade onde está instanciado o diretório onde é gravada a imagem.
Em nosso caso para realizar a conversão é necessário que a imagem esteja em qualidade 16 bits monocromático pois é uma exigência da própria impressora, utilizamos o Paint do Windows para realizar essa modificação salvando a mesma na qualidade descrita e já redimensionando o tamanho.
Iremos utilizar essa imagem que geramos após os processos anteriores na impressão, primeiramente devemos realizar a conversão para o formato em que a impressora irá reconhecer, em nosso caso com a extensão *.GRF.
Para conversão deve-se utilizar um Studio disponibilizado pela própria fabricante da impressora ou algum programa específico que tenha essa função.
Após obter a imagem com a extensão correta a mesma deverá ser salva no diretório system do RootPath nomeada com a extensão referente.
Utilizamos o fonte abaixo para efetuar a impressão:
#Include "TOTVS.ch"
#Include "TBICONN.ch"
#Include "TBICODE.ch"
User Function ImpQRCod()
Local cPorta := "LPT1"
Local cModelo := "ZEBRA"
MSCBPrinter(cModelo, cPorta, NIL, NIL, .F., NIL, NIL, NIL, , NIL, .F.) // CONFIGURAÇÃO DA IMPRESSORA
MSCBChkStatus(.F.) // VERIFICA STATUS DA IMPRESSORA
MSCBLoadGRF("NOME.GRF") // CARREGA IMAGEM NA MEMÓRIA DA IMPRESSORA
MSCBBegin(1, 6) // INICIA A IMPRESSÃO
MSCBGrafic(10, 8, "NOME") // IMPRESSÃO DE ARQUIVO NA MEMÓRIA
MSCBEnd() // FINALIZA IMPRESSÃO
MSCBClosePrinter() // FINALIZA CONEXÃO COM A IMPRESSORA
Return (NIL)
- Na conversão deve-se atentar ao tamanho da imagem com o tamanho da etiqueta.
- Existe a função MSCBWrite que também pode ser utilizada no processo de impressão onde existe a possibilidade de modificar algumas informações da imagem via linguagem da impressora.
- Reforçamos que o procedimento sugerido é um paliativo, por padrão as funções de impressão térmica (MSCB) não suportam impressão de códigos 2D.
0 Comentários