Skip to content

marcosgerene/Gerene.DFe.EscPos

Repository files navigation

Gerene.DFe.EscPos

Nuget count

Impressão em impressora termica para DFes via EscPos e derivados (EscBema, EscDaruma, EscElgin, entre outros) nativo em .NET.

Atualmente a biblioteca atende os documentos SAT e NFCe nos formatos 58 e 80mm.

Permite comunicação via RAW (USB), TCP, Serial e FileConfig.

Funcionamento:

A biblioteca conta com dois demos escritos em Winforms (Windows) e Avalonia (multi-plataforma).

Exemplo de uso:

using (var _printer = new SatPrinter()) //ou new NFCePrinter() para NFCe
{
	_printer.Protocolo = ProtocoloEscPos.EscPos; //Protocolo de comunicação	
	_printer.Impressora = "Nome da impressora"; //Para RAW nome da impressora. Para TCP o IP da impressora na rede. Para serial a porta.
	_printer.CortarPapel = true;
	_printer.ProdutoDuasLinhas = false;
	_printer.UsarBarrasComoCodigo = false;
	_printer.DocumentoCancelado = false; //Exibe tarja "Documento cancelado na impressão"
	_printer.Logotipo = logotipo_em_bytes; //Impressão do logotipo, não obrigatório
	_printer.TipoPapel = TipoPapel.Tp80mm; //ou TipoPapel.Tp58mm
	_printer.QrCodeLateral = true; //Padrão false. Exige Tp80mm e exige modo pagina na impressora.
	
	_printer.TipoConexao = TipoConexao.RAW; //padrão RAW, não obrigatório para conexão USB
	_printer.RemoverAcentos = true; //padrão true, não obrigatório
	
	_printer.Imprimir(string_com_o_conteudo_do_xml); //Imprime o documento fiscal
	
	// para impressão específica do XML de cancelamento de SAT CF-e use:
        //_printer.ImprimirCancelamento(string_com_o_conteudo_do_xml_de_cancelamento);
}

QrCode como imagem:

A partir da versão 1.0.21 é possível não gerar o QrCode via comando e sim imprimir como imagem. Este processo foi realizado para que impressoras sem suporte a QRCode (como a Gprinter GP-58L) fossem capaz de imprimir o SAT/NFCe.

Caso o atributo QrCodeImagem não seja informado (padrão) a aplicação continuará enviando o QrCode via comando (o que é indicado para impressoras com suporte!).

Exemplo de uso do QrCodeImagem usando o projeto QRCoder:

string qrcode = _printer.QRCodeTexto(xml);

SixLabors.ImageSharp.Image qrCodeImage;
using (var qrGenerator = new QRCoder.QRCodeGenerator())
using (var qrCodeData = qrGenerator.CreateQrCode(qrcode, QRCoder.QRCodeGenerator.ECCLevel.H))
using (var qrCode = new QRCoder.QRCode(qrCodeData))
    qrCodeImage = qrCode.GetGraphic(3);

using MemoryStream memoryStream = new();
qrCodeImage.SaveAsPng(memoryStream);
_printer.QrCodeImagem = new System.Drawing.Bitmap(memoryStream);

Importante: Não usar o parâmetro QrCodeImagem em impressoras com suporte a QrCode. A impressão de imagem é mais lenta e custosa para a impressora quando comparado a QRCode nativo!

Dependências:

OpenAC.Net.EscPos (motor de impressão) - https://github.com/OpenAC-Net/OpenAC.Net.EscPos

OpenAC.Net.Sat (desserialização do xml do SAT) - https://github.com/OpenAC-Net/OpenAC.Net.Sat

Hercules.NET (ZeusFiscal) (desserialização do xml da NFCe) - https://github.com/ZeusAutomacao/DFe.NET

Change log:

1.0.25 - QRCode não estava saindo na lateral para NFCe
1.0.24 - Adiciona File (ConfiguracaoFile) às formas de comunicação
1.0.23 - Removendo o antigo DFe.NET e migrando para Hercules.NET
1.0.22 - Não imprimia NFCe se a tag infAdic estivesse nula
1.0.21 - Permite imprimir o QrCode como imagem, util para impressoras sem suporte a QrCode
1.0.20 - Opção de customizar o tamanho das colunas (número de caracteres na linha)
1.0.19 - QR Code lateral
1.0.18 - Atualizando referencias ao Zeus (remoção dos projetos shared)
1.0.17 - Altera o motor de impressão, adicionando os protcolos TCP e Serial e novos recursos como impressão de caracteres acentuados.
1.0.16 - Remove o @ que aparecia no meio do protocolo no NFCe
1.0.15 - Migrando para OpenAC.Net.Sat
1.0.14 - Opção de alterar casas decimais da quantidade
1.0.13 - Melhora na impressão da observação do contribuinte
1.0.12 - SAT quebrava se o XFant de emitente estivesse nulo
1.0.11 - Opção de ocultar tag "De olho no imposto"
1.0.10 - Não era possível imprimir NFCe sem a tag infAdic (issue #6)
1.0.9 - Impressão em 58mm
1.0.8 - Adiciona a impressão do logotipo
1.0.7 - Adiciona Qtde. total de itens"
1.0.6 - Impressão para cancelamento do SAT

Break changes:

A versão 1.0.17 trouxe um novo motor de impressão (OpenAC.Net.EscPos) que permite impressão RAW (padrão para comunicação USB identica ao comportamento anterior) e adiciona os protocolos TCP e Serial.

Você pode preencher apenas o atributo "Impressora" (antes chamado de "NomeImpressora") e substituir o atributo "TipoImpressora" por "Protocolo" e o comportamento do motor anterior será mantido.

A versão 1.0.23 remove a referência ao DFe.NET (antigo ZeusNfe) e troca pelo Hercules.NET. Por se tratar de um fork é necessário que seja removido a referência ao DFe.NET também na aplicação que usar o Gerene.DFe.EscPos para evitar duplicidade de namespace.

Outras configurações:

Os atributos "ConfiguracaoRAW", "ConfiguracaoTCP", "ConfiguracaoSerial" e "ConfiguracaoFile" permitem alterações no comportamento da impressora e na forma de comunicação, para mais informações confira o funcionamento em https://github.com/OpenAC-Net/OpenAC.Net.EscPos

Você pode encontrar exemplos de uso em Linux onde a configuração padrão (RAW) precisa ser alterada na issue #10 (#10 (comment)).

Licença:

A licença do projeto é MIT, o seu uso é livre. Não garantimos QUALQUER suporte.

Agradecimentos:

O projeto Vip.Printer (https://github.com/leandrovip/Vip.Printer) serviu de motor de impressão entre as versões 1.0.0 e 1.0.16 de forma gratuíta e com qualidade, permitindo o funcionamento dessa biblioteca por quase dois anos com um nível muito baixo de manutenção.

Em busca de evolução a troca de motor foi necessária na versão 1.0.17. Essa mudança permitiu novos protocolos e o uma parceria ainda mais estreita com o grupo OpenAC que vem fazendo um trabalho incrível com diversos componentes para automação comercial. Conheça mais em: https://github.com/OpenAC-Net

About

Impressão em EscPos, EscBema e EscDaruma para DFes

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 4

  •  
  •  
  •  
  •  

Languages