Danfe.NFe.Core
2.0.1
dotnet add package Danfe.NFe.Core --version 2.0.1
NuGet\Install-Package Danfe.NFe.Core -Version 2.0.1
<PackageReference Include="Danfe.NFe.Core" Version="2.0.1" />
<PackageVersion Include="Danfe.NFe.Core" Version="2.0.1" />
<PackageReference Include="Danfe.NFe.Core" />
paket add Danfe.NFe.Core --version 2.0.1
#r "nuget: Danfe.NFe.Core, 2.0.1"
#:package Danfe.NFe.Core@2.0.1
#addin nuget:?package=Danfe.NFe.Core&version=2.0.1
#tool nuget:?package=Danfe.NFe.Core&version=2.0.1
Danfe.NFe.Core (refactor PdfSharpCore / .NET Core)
Gerador de DANFE NF-e modelo 55 em PDF.
Este repositório é uma continuação do trabalho original de Laranjeiras/Zion.NFe.Danfe — que por sua vez é um fork do SilverCard/DanfeSharp.
O que mudou nessa versão (2.0)
- Removida a dependência do PDFClown.NET 2.0.0 (biblioteca descontinuada e incompatível com .NET Core/8).
- Substituída por PdfSharpCore 1.3.x, com licença MIT e suporte multiplataforma (Windows, Linux, macOS).
- Biblioteca compilando em multi-target:
netstandard2.0enet8.0. - Projeto
WebServicemigrado para .NET 8 com minimal hosting. - Projeto de testes migrado para MSTest 3.x SDK-style em
net8.0. - Adicionado
FontResolverpadrão do PdfSharpCore para descoberta cross-platform de fontes (Times New Roman/Courier). - Encoding Unicode no XFont — acentuação brasileira preservada.
Instalação
dotnet add package Danfe.NFe.Core
Exemplo de uso
using Danfe.NFe.Core;
using Danfe.NFe.Core.Modelo;
// Cria o modelo a partir de um arquivo XML da NF-e.
var modelo = DanfeViewModelCreator.CriarDeArquivoXml("nfe.xml");
// O modelo também pode ser construído manualmente.
var modelo2 = new DanfeViewModel()
{
NfNumero = 123456,
NfSerie = 123,
ChaveAcesso = "12345698700000000000000000000000000000000000",
Emitente = new EmpresaViewModel()
{
CnpjCpf = "12345678000100",
RazaoSocial = "Minha Empresa Ltda",
// ...
},
// ...
};
modelo.DefinirTextoCreditos("Gerado por Minha Empresa Ltda.");
// Gera o PDF e salva em arquivo.
using (var danfe = new DanfeDoc(modelo))
{
danfe.Gerar();
danfe.Salvar("danfe.pdf");
}
// Ou obtém os bytes do PDF em memória.
using (var ms = new MemoryStream())
using (var danfe = new DanfeDoc(modelo))
{
danfe.Gerar();
byte[] bytes = danfe.ObterPdfBytes(ms);
// bytes contém o PDF pronto para envio.
}
Adicionar logo (opcional)
using (var danfe = new DanfeDoc(modelo))
{
// Logo raster (JPG/PNG):
danfe.AdicionarLogoImagem("logo.jpg");
// Ou logo vetorial (primeira página de um PDF):
danfe.AdicionarLogoPdf("logo.pdf");
danfe.Gerar();
danfe.Salvar("danfe.pdf");
}
Estrutura da solução
| Projeto | Framework | Descrição |
|---|---|---|
Danfe.NFe.Core |
netstandard2.0 / net8.0 | Biblioteca principal. |
Danfe.NFe.Core.WebService |
net8.0 | API REST de exemplo (POST /api/xml/pdf/gerar). |
Danfe.NFe.Core.Tests |
net8.0 | Testes MSTest. |
Font resolver (Linux / macOS / Docker)
O PdfSharpCore precisa localizar fontes TrueType do sistema. O projeto já
configura GlobalFontSettings.FontResolver = new FontResolver() do próprio
PdfSharpCore, que busca fontes em diretórios padrão de cada SO.
Em imagens Docker mínimas (alpine, debian-slim etc.) geralmente você
precisa instalar as fontes manualmente:
RUN apt-get update && apt-get install -y fonts-liberation fontconfig && fc-cache -f
Se você quiser usar um resolver customizado, basta sobrescrever antes da primeira chamada à biblioteca:
PdfSharpCore.Fonts.GlobalFontSettings.FontResolver = meuResolverCustomizado;
Build
dotnet restore
dotnet build
dotnet test
Licença
MIT. Baseado no trabalho original do DanfeSharp / Zion.NFe.Danfe.
| Product | Versions 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 was computed. 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 was computed. 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 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. 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. |
-
.NETStandard 2.0
- PdfSharpCore (>= 1.3.65)
-
net8.0
- PdfSharpCore (>= 1.3.65)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
v2.0.1 - Correção do canhoto em landscape (margem esquerda vazia): rotação agora usa XGraphics.RotateAtTransform com pivot (X+W/2, Y+W/2) e ângulo -90, compatível com o sistema Y-down do PdfSharpCore. Canhotos rotacionados voltaram a aparecer na lateral esquerda do DANFE em modo paisagem.