Jump to content

dev botao

Como criar relatórios com o ACBrPosPrinter ?


  • Este tópico foi criado há 1566 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Fundadores

O que é o ACBrPosPrinter ?

O ACBrPosPrinter permite o envio de comandos em EscPos, direto para a porta da Impressora. Ele é excelente para criação de relatórios complexos em impressoras de bobina, executando tarefas como Impressão de QRCode, Cod.Barras, alinhamento, Expandido, Negrito, Invertido, etc...

Você pode baixar uma apresentação mais completa do ACBrPosPrinter,  abaixo:

Apresentação - ACBr - Elgin - ACBrPosPrinter.pdf 724 kB · 0 downloads

  • Se você usa o ACBr no seu Delphi, poderá encontrar o componente ACBrPosPrinter, na Palheta ACBrSerial...
  • Para quem não usa Delphi, o ACBrPosPrinter pode ser acessado pela

 

Com o ACBrPosPrinter, você pode criar relatórios  complexos, usando até mesmo o bloco de notas, bastando para isso, conhecer a sintaxe das Tags que o mesmo suporta...  (leia mais abaixo)

 

Características do ACBrPosPrinter

  • Usa linguagem nativa da Impressora “Esc/Pos”
  • Suporta vários protocolos “Esc/Pos”, cobrindo praticamente todas as Impressoras do Mercado Brasileiro
  • Permite o uso de Tags, para geração de relatórios complexos. (Fonte, Alinhamento, Cod.Barras, QRCode, Imagens)
  • Permite acesso aos dispositivos ligados a Impressora (Gaveta, Guilhotina, Sensores de Papel/Tampa)
  • Permite vários tipos de Porta (COM, RAW, TCP, File) (veja essa Post)

 

Como usar o ACBrPosPrinter ?

De forma muito resumida, seguem os passos necessários

  • Verifique o protocolo suportado pela Impressora e configure em ACBrPosPrinter.Modelo
  • Verifique a Porta disponível na Impressora e configure em ACBrPosPrinter.Porta
  • Ative a comunicação com a Impressora, chamando: ACBrPosPrinter.Ativar
  • Gere seu relatório usando as Tags suportadas e imprima usando: ACBrPosPrinter.Imprimir(Relatorio: String)

 

Quais impressoras o ACBrPosPrinter suporta ?

Praticamente todas, uma vez que a maioria dos equipamentos existentes no mercado, tenta mimetizar o protocolo Epson Esc/Pos... Portanto se a sua impressora não está listada na lista de Protocolos suportados, faça um teste definido:

  ACBrPosPrinter1.Modelo := ppEscPosEpson;

Conheça também os relatórios de equipamentos homologados

https://www.projetoacbr.com.br/forum/forum/63-equipamentos-testados/

 

Conhecendo melhor as Tags

O ACBrPosPrinter, usa uma linguagem de Tags, que se assemelha as Tags de HTML.  Exemplo, para imprimir um texto em expandido, podemos usar a Tag <e>

<e>EXPANDIDO

Existem 2 conjuntos de Tag, no ACBrPosPrinter.

  • Tag de Linha
    • São Tags que tem efeito imediato, e não precisam ser fechadas por uma Tag de Fechament. Após a interpretação e envio da Tag, a Impressão será afetada imediatamente, até a Tag ser desligada ou substituída por outra.
      Alguns comandos entretanto, são desligados automaticamente pela impressora, após uma quebra de Linha.
      As Tags de Alinhamento e as Tags de formatação de caracteres, são exemplos desse tipo de Tag
       
  • Tags de Bloco
    • São Tags que necessariamente precisam ser fechadas, ou seja, se não houver um inicio e fim da Tag, o ACBrPosPrinter não será capaz de interpreta-la
      As tags de Cod.Barras e QRCode, são exemplos desse tipo de Tag

 

A maneira mais simples de conhecer TODAS as tags, é pedir para o próprio ACBrPosPrinter imprimi-las, usando o comando:

  ACBrPosPrinter1.ImprimirTags;

Isso produzirá a saída do seguinte relatório:

<e> - Liga Expandido
</e> - Desliga Expandido
<a> - Liga Altura Dupla
</a> - Desliga Altura Dupla
<n> - Liga Negrito
</n> - Desliga Negrito
<s> - Liga Sublinhado
</s> - Desliga Sublinhado
<c> - Liga Condensado
</c> - Desliga Condensado
<i> - Liga Italico
</i> - Desliga Italico
</fn> - Fonte Normal
</fa> - Liga Fonte Tipo A (normal)
</fb> - Liga Fonte Tipo B (condensada)
<in> - Liga Fonte Invertida (Fundo Preto)
</in> - Desliga Fonte Invertida
</ae> - Liga Alinhamento a Esquerda
</ce> - Liga Alinhamento ao Centro
</ad> - Liga Alinhamento a Direita
</linha_simples> - Imprime Linha Simples
</linha_dupla> - Imprime Linha Dupla
</pular_linhas> - Pula N Linhas de acordo com propriedade do componente
</logo> - Imprime Logotipo já gravado na Impressora (use utilitário do fabricante)
</corte> - Efetua Corte, conforme configuração de "TipoCorte"
</corte_parcial> - Efetua Corte Parcial no Papel (não disponivel em alguns modelos)
</corte_total> - Efetua Corte Total no papel
</abre_gaveta> - Aciona a abertura da Gaveta de Dinheiro
</beep> - Emite um Beep na Impressora (não disponivel em alguns modelos)
</zera> - Reseta as configurações de Fonte Alinhamento.<LF>Ajusta Página de Código e Espaço entre Linhas
</lf> - Pula para a própxima linha
</cr> - Retorna para o Inicio da Linha
</reset> - Reseta as configurações de Fonte Alinhamento
<ad> - Bloco - Texto Alinhado a Direita
<ae> - Bloco - Texto Alinhado a Esquerda
<ce> - Bloco - Texto Centralizado
<ean8> - Bloco - Cod.Barras EAN8 - 7 numeros e 1 dig.verificador
<ean13> - Bloco - Cod.Barras EAN13 - 12 numeros e 1 dig.verificador
<std> - Bloco - Cod.Barras "Standard 2 of 5" - apenas números, tamanho livre
<inter> - Bloco - Cod.Barras "Interleaved 2 of 5" - apenas números, tamanho PAR
<code11> - Bloco - Cod.Barras Code11 - apenas números, tamanho livre
<code39> - Bloco - Cod.Barras Code39 - Aceita: 0..9,A..Z, ,$,%,*,+,-,.,/, tamanho livre
<code93> - Bloco - Cod.Barras Code93 - Aceita: 0..9,A..Z,-,., ,$,/,+,%, tamanho livre
<code128> - Bloco - Cod.Barras Code128 - Todos os caracteres ASCII, tamanho livre
<upca> - Bloco - Cod.Barras UPCA - 11 numeros e 1 dig.verificador
<upce> - Bloco - Cod.Barras UPCE - 11 numeros e 1 dig.verificador
<codabar> - Bloco - Cod.Barras CodaBar - Aceita: 0..9,A..D,a..d,$,+,-,.,/,:, tamanho livre
<msi> - Bloco - Cod.Barra MSI - Apenas números, 1 dígito verificador
<code128a> - Bloco - Cod.Barras Code128 - Subtipo A
<code128b> - Bloco - Cod.Barras Code128 - Subtipo B (padrão) = <code128>
<code128c> - Bloco - Cod.Barras Code128 - Subtipo C (informar valores em BCD)
<qrcode> - Bloco - Cod.Barras QrCode
<abre_gaveta> - Bloco - Abertura de Gaveta Específica (1 ou 2)
<barra_mostrar> - Bloco - Configura se deve exibir conteudo abaixo do Cod.Barras: 0-NAO; 1-SIM
<barra_largura> - Bloco - Configura a Largura das Barras do Cod.Barras: 0 a 5. (0=default)
<barra_altura> - Bloco - Configura a Altura do Cod.Barras: 0 a 255. (0=default)
<qrcode> - Bloco - Imprime QRCode de acordo com "ConfigQRCode"
<qrcode_tipo> - Bloco - Configura o Tipo de QRCode: 1,2
<qrcode_largura> - Bloco - Configura a Largura do QRCode: 1 a 16
<qrcode_error> - Bloco - Configura o Error Level do QRCode: 0 a 3
<bmp> - Bloco - Imprime Imagem BMP monocromática. Conteúdo pode ser: Path da Imagem, Stream em Base64 ou AscII Art (0 e 1)
<mp> - Liga Modo de Impressão em Página (em memória)
</mp> - Desliga Modo de Impressão Página (em memória)
</mp_imprimir> - Comanda a Impressão da Página na memória
<mp_direcao> - Bloco - Direção Texto no Modo Página: 0-Esquerda/Direta, 1-Topo/Baixo, 2-Direita/Esquerda, 3-Baixo/Topo
<mp_esquerda> - Bloco - Posição Inicial Horizontal Modo Página (Esquerda)
<mp_topo> - Bloco - Posição Inicial Vertical Modo Página (Topo)
<mp_largura> - Bloco - Largura da Região no Modo Página
<mp_altura> - Bloco - Altura da Região no Modo Página
<mp_espaco> - Bloco - Espaço entre Linhas na Região no Modo Página
</mp_configurar> - Envia a configuração de Coordenadas da Região e direção do Modo Página
<logo_imprimir> - Bloco - Configura a Impressão ou não do Logo Tipo: 0-NÃO, 1-SIM (default = 1)
<logo_kc1> - Bloco - Configura a posição KC1 do Logo a ser impresso. Ex: 0=48
<logo_kc2> - Bloco - Configura a posição KC2 do Logo a ser impresso. Ex: 1=49
<logo_fatorx> - Bloco - Configura o aumento Horizonal do Logo, de 1 a 4
<logo_fatory> - Bloco - Configura o aumento Vertical do Logo, de 1 a 4
<ignorar_tags> - Bloco - Ignora todas as Tags contidas no Bloco

 

 

Printing like a Pro

test GIF

 

Para aprender de forma profissional, como usar o ACBrPosPrinter, e gerar relatórios complexos, como o Extrato do SAT ou o DANFCe da NFCe, é fundamental estudar os Fontes e exemplos disponíveis no Demo.
Você pode encontrar os fontes do Demo na pasta \ACBr\Exemplos\ACBrSerial\ACBrPosPrinter

Se quiser baixar e testar uma versão já compilada, use o Donwload abaixo:

 

 

Configurações Úteis do ACBrPosPrinter

 

Propriedade

Descrição

Exemplo

Colunas

Define o máximo de Caracteres, em uma linha, usando a Fonte Normal

48, 42, 40

EspacoEntreLinhas

Espaço em DPI entre as Linhas.
(permite economia de Papel)

0 (default), 10, 40, 50

LinhasEntreCupons

Define o Pulo de Linhas para o comando </pular_linhas>

7, 5

ArqLog

Arquivo de Log detalhando tradução de Tags e Dump para Porta

C:\temp\PosPrinter.log

PaginaDeCodigo

Define a Página de Código usada pela Impressora, para a impressão correta de acentos

pc850, pc852, pcUTF8

ControlePorta

Se Ligado, Abre e Fecha a Porta a cada envio de Comandos para a Impressora

True, False

ConfigQRCode

Configurações do QRCode: Tipo, Largura, ErroLevel, etc

 

 

 

Exemplo de Tags de Formatação de Caracteres

Tags enviadas Relatório Gerado
</linha_dupla>
FONTE NORMAL: 42 Colunas
....+....1....+....2....+....3....+....4..
<e>EXPANDIDO: 21 Colunas
....+....1....+....2.
</e><c>CONDENSADO: 56 Colunas
....+....1....+....2....+....3....+....4....+....5....+.
</c><n>FONTE NEGRITO</N>
<in>FONTE INVERTIDA</in>
<S>FONTE SUBLINHADA</s>
<i>FONTE ITALICO</i>
FONTE NORMAL
</linha_simples>
<n>LIGA NEGRITO
<i>LIGA ITALICO
<S>LIGA SUBLINHADA
<c>LIGA CONDENSADA
<e>LIGA EXPANDIDA
<a>LIGA ALTURA DUPLA
</fn>FONTE NORMAL
</linha_simples>
<e><n>NEGRITO E EXPANDIDA</n></e>
<c><n>NEGRITO E CONDENSADA</n></c>
<e><a>EXPANDIDA E ALT.DUPLA</a></e>
</fn>FONTE NORMAL
<in><e>INVERTIDA E EXPANDIDA</e></in>
<in><c>INVERTIDA E CONDENSADA</c></in>
<in><a>INVERTIDA E ALT.DUPLA</a></in>
</fn>FONTE NORMAL
</linha_simples>
</FB>FONTE TIPO B
<n>FONTE NEGRITO</N>
<e>FONTE EXPANDIDA</e>
<a>FONTE ALT.DUPLA</a>
<in>FONTE INVERTIDA</in>
<S>FONTE SUBLINHADA</s>
<i>FONTE ITALICO</i>
</FA>FONTE TIPO A
</FN>FONTE NORMAL
</corte_total>
image.png

Reparem que no exemplo acima, o comando Itálico não funcionou. Isso é uma característica do equipamento que usamos nesse teste, (Epson Esc/Pos)...
Ou seja, algumas Tags, podem não funcionar em alguns protocolos. O Demo ACBrPosPrinter é indicado para testar a compatibilidade da Impressora, com os protocolos suportados...


Exemplo de Tags de Alinhamento Texto em conjunto com Formatação de Caractere 

Tags enviadas Relatório Gerado

</zera>
</linha_dupla>
TEXTO NORMAL
</ae>ALINHADO A ESQUERDA
<bmp>C:\ACBrPosPrinter\acbrmono.bmp</bmp>
1 2 3 TESTANDO
<n>FONTE NEGRITO</N>
<e>FONTE EXPANDIDA</e>
<a>FONTE ALT.DUPLA</a>
<c>FONTE CONDENSADA</c>
<in>FONTE INVERTIDA</in>
<S>FONTE SUBLINHADA</s>
<i>FONTE ITALICO</i>
</fn></ce>ALINHADO NO CENTRO
<bmp>C:\ACBrPosPrinter\acbrmono.bmp</bmp>
1 2 3 TESTANDO
<n>FONTE NEGRITO</N>
<e>FONTE EXPANDIDA</e>
<a>FONTE ALT.DUPLA</a>
<c>FONTE CONDENSADA</c>
<in>FONTE INVERTIDA</in>
<S>FONTE SUBLINHADA</s>
<i>FONTE ITALICO</i>
</fn></ad>ALINHADO A DIREITA
<bmp>C:\ACBrPosPrinter\acbrmono.bmp</bmp>
1 2 3 TESTANDO
<n>FONTE NEGRITO</N>
<e>FONTE EXPANDIDA</e>
<a>FONTE ALT.DUPLA</a>
<c>FONTE CONDENSADA</c>
<in>FONTE INVERTIDA</in>
<S>FONTE SUBLINHADA</s>
<i>FONTE ITALICO</i>
</ae></fn>TEXTO NORMAL
</corte_total>

 

image.png

 

Exemplo de Tags de QRCode e Cod.Barras

Tags enviadas Relatório Gerado

</zera>
</linha_dupla><qrcode_tipo>2</qrcode_tipo><qrcode_largura>4</qrcode_largura><qrcode_error>0</qrcode_error><qrcode>http://projetoacbr.com.br</qrcode>
</ce><qrcode>http://www.projetoacbr.com.br/</qrcode>
<barra_mostrar>0</barra_mostrar><barra_largura>0</barra_largura><barra_altura>0</barra_altura>
</Linha_Simples>
EAN13: 123456789012
<ean13>123456789012</ean13>
</Linha_Simples>
CODE128C: 3515071111111111111159
<code128c>3515071111111111111159</code128c>
</corte_total>

 

 

image.png

No exemplo acima, demonstramos as tags que permitem configurar algumas características do QRCode e Cod.Barras, essas tags são opcionais, e você também pode configurar o ACBrPosPrinter, pelas propriedades do componente

 

 

Acionando  a Guilhotina e Gaveta de dinheiro:

Moleza... basta enviar as Tags...

</corte> - Efetua Corte, conforme configuração de "TipoCorte"
</corte_parcial> - Efetua Corte Parcial no Papel (não disponivel em alguns modelos)
</corte_total> - Efetua Corte Total no papel
</abre_gaveta> - Aciona a abertura da Gaveta de Dinheiro

Exemplo:

    ACBrPosPrinter1.Imprimir('</abre_gaveta>');

 

 

Lendo as informações da Impressora

Alguns tipos de Porta, permite receber informações da Impressora. Os Tipos de Portas que o ACBrPosPrinter consegue ler informações da Impressora são: Serial, USB, TCP, BTH, Hook

O exemplo abaixo, imprime em um memo, o Status da Impressora

procedure TFrPosPrinterTeste.bLerStatusClick(Sender: TObject);
var
  Status: TACBrPosPrinterStatus;
  i: TACBrPosTipoStatus;
  AStr: String;
begin

  Status := ACBrPosPrinter1.LerStatusImpressora;

  if Status = [] then
    mImp.Lines.Add('Nennhum Erro encontrado')
  else
  begin
    AStr := '';
    For i := Low(TACBrPosTipoStatus) to High(TACBrPosTipoStatus) do
    begin
      if i in Status then
        AStr := AStr + GetEnumName(TypeInfo(TACBrPosTipoStatus), integer(i) )+ ', ';
    end;

    mImp.Lines.Add( AStr );
  end;
end;  

 

O Exemplo abaixo, retorna as informações da Impressora

procedure TFrPosPrinterTeste.bLerInfoClick(Sender: TObject);
begin
  mImp.Lines.Add( ACBrPosPrinter1.LerInfoImpressora );
end;

Exemplo de retorno

Citar

 Fabricante=EPSON
Firmware=1VB2_98
Modelo=TM-T20
Serial=342353464364
Guilhotina=1

 

 

Como a mágica do ACBrPosPrinter funciona ?

As Tags são interpretadas e traduzidas pelo ACBrPosPrinter, para a Linguagem EscPos, que a linguagem nativa do Firmware da Impressora... ou seja, o ACBrPosPrinter enviará comandos no Protocolo EscPos, para que a impressora interprete-os e faça o Trabalho.... então quando enviamos por exemplo, o comando de QRCode,  abaixo:

<qrcode>http://www.projetoacbr.com.br</qrcode>

O ACBrPosPrinter irá traduzir isso para uma sequencia de comandos, em EscPos, que quando interpretados pela Impressora, fará com que a mesma calcule e imprima um QRCode.

Então o ACBrPosPrinter não se preocupa com a parte visual da Impressão, isso é tarefa do Firmware da Impressora, que suporta a poderosa linguagem EscPos

image.png

Complexo não ?  melhor deixar o ACBrPosPrinter cuidar dessa tarefa e gerar o EscPos

 

 

Leia Também

 

 

 

  • Like 9
  • Thanks 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link to comment
Share on other sites

  • Daniel Simoes changed the title to Como criar relatórios com o ACBrPosPrinter ?
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.