OpenAC.Net.EscPos 1.7.0

Prefix Reserved
dotnet add package OpenAC.Net.EscPos --version 1.7.0
                    
NuGet\Install-Package OpenAC.Net.EscPos -Version 1.7.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="OpenAC.Net.EscPos" Version="1.7.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="OpenAC.Net.EscPos" Version="1.7.0" />
                    
Directory.Packages.props
<PackageReference Include="OpenAC.Net.EscPos" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add OpenAC.Net.EscPos --version 1.7.0
                    
#r "nuget: OpenAC.Net.EscPos, 1.7.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package OpenAC.Net.EscPos@1.7.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=OpenAC.Net.EscPos&version=1.7.0
                    
Install as a Cake Addin
#tool nuget:?package=OpenAC.Net.EscPos&version=1.7.0
                    
Install as a Cake Tool

OpenAC.Net.EscPos

NuGet Version NuGet Downloads Discord License: MIT Target Frameworks Target Frameworks

Biblioteca .NET multiplataforma para comunicação, impressão e pré-visualização gráfica de cupons em impressoras térmicas não fiscais utilizando o protocolo ESC/POS e variações dos principais fabricantes.

Desenvolvida pelo time OpenAC .Net, a biblioteca abstrai as particularidades de cada fabricante, oferecendo uma API fluida, suporte a múltiplos meios de conexão (Serial, TCP/IP, RAW, File) e processamento de imagens 100% multiplataforma com SkiaSharp.


🚀 Funcionalidades

  • Formatação e Impressão de Texto:
    • Fontes (Normal, FonteA, FonteB) e tamanhos (Normal, Condensada, Expandida).
    • Alinhamento (Esquerda, Centro, Direita).
    • Estilos combináveis (Negrito, Itálico, Sublinhado, AlturaDupla, Invertido).
    • Impressão de fragmentos de texto com estilos distintos na mesma linha (TextSlice).
    • Suporte a diversas páginas de código (pc437, pc850, pc852, pc860, pcUTF8, pc1252).
  • Códigos de Barras e QR Code:
    • Códigos de barras: UPCA, UPCE, EAN13, EAN8, CODE39, Inter2of5, CodaBar, CODE93, CODE128, CODE128a, CODE128b, CODE128c e MSI.
    • Configuração de altura, largura das barras e posição do texto HRI (SemTexto, Acima, Abaixo, Ambos).
    • Impressão de QR Code (ideal para NFC-e, SAT e PIX) com controle de tamanho do módulo e nível de correção de erro.
  • Imagens e Logotipos:
    • Impressão de imagens a partir de byte[] com fatiamento automático e redimensionamento proporcional (ResizeImage).
    • Impressão e programação de logotipo gravado na memória da impressora (KC1 / KC2).
  • Modo Página (Page Mode):
    • Criação de múltiplas regiões independentes com coordenadas (Esquerda, Topo, Largura, Altura) e rotação (EsquerdaParaDireita, BaixoParaTopo, TopoParaBaixo, DireitaParaEsquerda).
  • Controle de Periféricos e Diagnóstico:
    • Corte de papel (Total ou Parcial), avanço de linhas e sinal sonoro (Beep).
    • Abertura de gaveta de dinheiro com suporte a inversão de sinal de leitura.
    • Leitura em tempo real do Status da Impressora (EscPosTipoStatus: tampa aberta, pouco papel, sem papel, gaveta aberta, erro, etc.).
    • Leitura de Informações da Impressora (InformacoesImpressora: fabricante, modelo, firmware, número de série e guilhotina).
  • Pré-visualização Gráfica (GerarPreview):
    • Geração de imagem PNG (byte[] ou Stream) simulando a bobina térmica com todos os comandos presentes no buffer (textos, estilos, códigos de barras, QR Codes, imagens, cortes e regiões em modo página), sem exigir impressora física conectada.

🖨️ Protocolos e Fabricantes Suportados

A biblioteca suporta os seguintes protocolos configuráveis através do enum ProtocoloEscPos:

  • EscPos (Padrão Epson ESC/POS e compatíveis)
  • EscEpsonP2 (Epson Esc/P2)
  • EscBematech (Bematech MP-4200 TH, MP-2800 TH, etc.)
  • EscDaruma (Daruma DR700, DR800, etc.)
  • EscElgin (Elgin i7, i8, i9)
  • EscDiebold (Diebold Mecaf / Procomp)
  • EscGPrinter (GPrinter)
  • EscDatecs (Datecs)
  • EscZJiang (ZJiang)
  • EscPosStar (PosStar)
  • EscSunmi (Terminais inteligentes Sunmi)
  • EscCustomPos (Impressoras Custom)

📦 Instalação

Adicione o pacote via NuGet Package Manager ou CLI:

.NET CLI:

dotnet add package OpenAC.Net.EscPos

Package Manager Console:

Install-Package OpenAC.Net.EscPos

PackageReference:

<PackageReference Include="OpenAC.Net.EscPos" Version="1.6.0.1" />

🛠️ Como Usar

1. Inicializando e Configurando a Impressora

Você pode instanciar EscPosPrinter<TConfig> utilizando qualquer dispositivo do OpenAC.Net.Devices (SerialConfig, TCPConfig, RawConfig ou FileConfig):

using OpenAC.Net.Devices;
using OpenAC.Net.EscPos;
using OpenAC.Net.EscPos.Commom;

// Exemplo via TCP/IP (rede)
using var posPrinter = new EscPosPrinter<TCPConfig>(new TCPConfig
{
    IP = "192.168.0.100",
    Porta = 9100,
    ControlePorta = true
});

posPrinter.Protocolo = ProtocoloEscPos.EscPos;
posPrinter.PaginaCodigo = PaginaCodigo.pc850;
posPrinter.EspacoEntreLinhas = 0;
posPrinter.LinhasEntreCupons = 4;

posPrinter.Conectar();

2. Imprimindo Textos, Códigos de Barras e QR Code

using OpenAC.Net.EscPos.Command;
using OpenAC.Net.EscPos.Commom;

// Cabeçalho
posPrinter.ImprimirTexto("OPENAC .NET AUTOMAÇÃO", CmdTamanhoFonte.Expandida, CmdAlinhamento.Centro, CmdEstiloFonte.Negrito);
posPrinter.ImprimirTexto("Rua Exemplo, 123 - Centro", CmdAlinhamento.Centro);
posPrinter.ImprimirLinha(dupla: true);

// Textos com múltiplos estilos na mesma linha
posPrinter.ImprimirTexto(
    new TextSlice("ITEM 001  ", CmdEstiloFonte.Negrito),
    new TextSlice("Café Expresso           R$ 8,50"));

posPrinter.ImprimirLinha();
posPrinter.ImprimirTexto("TOTAL R$ 8,50", CmdFonte.Normal, CmdTamanhoFonte.Expandida, CmdAlinhamento.Direita, CmdEstiloFonte.Negrito);
posPrinter.ImprimirLinha();

// Código de Barras EAN-13
posPrinter.ImprimirBarcode("7891234567895", CmdBarcode.EAN13, CmdAlinhamento.Centro, CmdBarcodeText.Abaixo);
posPrinter.PularLinhas(1);

// QR Code (NFC-e / SAT / PIX)
posPrinter.ImprimirQrCode(
    "https://openac.net.br",
    tamanho: QrCodeModSize.Normal,
    aAlinhamento: CmdAlinhamento.Centro);

// Cortar papel e descarregar o buffer para a impressora
posPrinter.CortarPapel(parcial: true);
posPrinter.Imprimir();

3. Imprimindo Imagens (byte[])

using System.IO;
using OpenAC.Net.EscPos.Commom;
using OpenAC.Net.EscPos.Extensions;

// Carrega os bytes da imagem e redimensiona mantendo a proporção
byte[] logoBytes = File.ReadAllBytes("logo.png").ResizeImage(300, 300);

posPrinter.ImprimirImagem(logoBytes, CmdAlinhamento.Centro);
posPrinter.CortarPapel(parcial: true);
posPrinter.Imprimir();

4. Gerando Imagem de Pré-visualização (GerarPreview)

É possível gerar uma imagem PNG do cupom montado no buffer antes de imprimir (ou mesmo sem impressora conectada):

using System.IO;
using OpenAC.Net.EscPos.Commom;

posPrinter.ImprimirTexto("CUPOM DE TESTE", CmdTamanhoFonte.Expandida, CmdAlinhamento.Centro, CmdEstiloFonte.Negrito);
posPrinter.ImprimirLinha(dupla: true);
posPrinter.ImprimirQrCode("https://github.com/OpenAC-Net/OpenAC.Net.EscPos", aAlinhamento: CmdAlinhamento.Centro);
posPrinter.CortarPapel(parcial: true);

// Obtém os bytes da imagem PNG (ou grava diretamente em um Stream)
byte[] pngPreview = posPrinter.GerarPreview(limparBuffer: false);
File.WriteAllBytes("preview_cupom.png", pngPreview);

5. Consultando Status e Informações da Impressora

// Leitura do status (tampa aberta, pouco papel, sem papel, gaveta aberta, etc.)
EscPosTipoStatus status = posPrinter.LerStatusImpressora();
Console.WriteLine($"Status atual: {status}");

// Leitura das informações de hardware/firmware
InformacoesImpressora? info = posPrinter.LerInfoImpressora();
Console.WriteLine(info?.ToString());

🖥️ Aplicação de Demonstração (Avalonia UI)

O repositório inclui o projeto OpenAC.Net.EscPos.Demo construído em Avalonia UI (.NET 10), compatível com Windows, Linux e macOS, permitindo testar todas as conexões, comandos, leitura de status e visualização de cupons em tempo real.

dotnet run --project src/OpenAC.Net.EscPos.Demo/OpenAC.Net.EscPos.Demo.csproj

🤝 Como Contribuir

Contribuições são muito bem-vindas! Se você deseja relatar um problema, sugerir melhorias ou enviar uma contribuição:

  1. Faça um Fork do repositório.
  2. Crie uma Branch para a sua feature (git checkout -b feature/nova-funcionalidade).
  3. Faça o commit das suas alterações (git commit -m 'Adiciona suporte a novo protocolo').
  4. Envie para o GitHub (git push origin feature/nova-funcionalidade).
  5. Abra um Pull Request.

💖 Ajude o Projeto OpenAC .Net

Se o OpenAC.Net.EscPos é útil para o seu negócio ou projeto open source e você deseja apoiar o desenvolvimento contínuo, considere fazer uma contribuição:

  • Participe da nossa comunidade no Discord.
  • Contribua com código, testes e documentação no GitHub.

📄 Licença

Este projeto é distribuído sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 is compatible.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 is compatible.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on OpenAC.Net.EscPos:

Package Downloads
Gerene.DFe.EscPos

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 e Serial.

OpenAC.Net.Sat.Extrato.EscPos

Biblioteca para impressao do extrato do SAT/MFe em EscPos

OpenAC.Net.NFe.DANFe.EscPos

Biblioteca para geração e impressão de DANFE NFC-e em impressoras térmicas usando ESC/POS.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.7.0 98 10/28/2026
1.6.0.1 7,290 6/22/2025
1.6.0 925 6/7/2025
1.5.0 8,047 8/20/2022
1.0.0 3,469 4/24/2022
1.0.0-beta.10 299 4/11/2022
1.0.0-beta.9 301 4/7/2022
1.0.0-beta.8 304 4/6/2022
1.0.0-beta.7 278 4/6/2022
1.0.0-beta.6 283 4/5/2022
1.0.0-beta.5 280 4/3/2022
1.0.0-beta.4 291 4/2/2022
1.0.0-beta.3 307 4/2/2022
1.0.0-beta.2 292 3/30/2022
1.0.0-beta.1 319 3/30/2022