Giter Site home page Giter Site logo

gerene.dfe.escpos's Introduction

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 (marcosgerene#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

gerene.dfe.escpos's People

Contributors

marcosgerene avatar eneiasramos avatar adrbarros avatar danilobreda avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.