OpenAC.Net.NFSe.Nacional.DANFSe.PDFSharp.Web
1.5.0.2
Prefix Reserved
dotnet add package OpenAC.Net.NFSe.Nacional.DANFSe.PDFSharp.Web --version 1.5.0.2
NuGet\Install-Package OpenAC.Net.NFSe.Nacional.DANFSe.PDFSharp.Web -Version 1.5.0.2
<PackageReference Include="OpenAC.Net.NFSe.Nacional.DANFSe.PDFSharp.Web" Version="1.5.0.2" />
<PackageVersion Include="OpenAC.Net.NFSe.Nacional.DANFSe.PDFSharp.Web" Version="1.5.0.2" />
<PackageReference Include="OpenAC.Net.NFSe.Nacional.DANFSe.PDFSharp.Web" />
paket add OpenAC.Net.NFSe.Nacional.DANFSe.PDFSharp.Web --version 1.5.0.2
#r "nuget: OpenAC.Net.NFSe.Nacional.DANFSe.PDFSharp.Web, 1.5.0.2"
#:package OpenAC.Net.NFSe.Nacional.DANFSe.PDFSharp.Web@1.5.0.2
#addin nuget:?package=OpenAC.Net.NFSe.Nacional.DANFSe.PDFSharp.Web&version=1.5.0.2
#tool nuget:?package=OpenAC.Net.NFSe.Nacional.DANFSe.PDFSharp.Web&version=1.5.0.2
OpenAC.Net.NFSe.Nacional.DANFSe.PDFSharp.Web
Integração ASP.NET Core para gerar o DANFSe Nacional em PDF usando a biblioteca
OpenAC.Net.NFSe.Nacional.DANFSe.PDFSharp.
A biblioteca depende de OpenAC.Net.NFSe.Nacional.Web para reutilizar o contrato
INFSeConfigurationProvider<TConfiguration>. A configuração da impressão não usa
IOptions/IOptionsMonitor: ela é obtida pelo provider single-tenant ou multiempresa em cada
operação.
Recursos
- Registro no container de serviços do ASP.NET Core.
- Configuração single-tenant pronta para uso.
- Configuração e isolamento por empresa.
- Geração individual ou em lote, inteiramente em memória.
- Retorno em
byte[],StreamouIResult. - Exibição no navegador ou download com nome configurável.
- Propagação de
CancellationTokenao provider de configuração. - Compatibilidade com .NET 8, 9 e 10.
Registro
builder.Services.AddOpenDANFSeNacionalWeb(opcoes =>
{
opcoes.Configuracoes.ExibirQRCode = true;
opcoes.Configuracoes.LogoPrestador = File.ReadAllBytes("logo.png");
opcoes.NomeArquivo = nota => $"DANFSe-{nota.Informacoes.NumeroNFSe}.pdf";
});
Esse registro cria automaticamente um
DefaultNFSeConfigurationProvider<DANFSeNacionalWebOptions>. A função de configuração é
aplicada a uma nova instância sempre que o serviço precisa gerar um documento. As sobrecargas sem
tenantId usam o identificador default.
Também é possível registrar apenas os valores padrão:
builder.Services.AddOpenDANFSeNacionalWeb();
Minimal API
app.MapGet("/danfse/{chave}", async (string chave, IOpenDANFSeNacionalWeb danfse,
CancellationToken cancellationToken) =>
{
NotaFiscalServico nota = ObterNota(chave);
return await danfse.GerarResultadoAsync(nota, cancellationToken: cancellationToken);
});
Por padrão, o PDF é exibido no navegador. Defina ForcarDownload = true para enviar
o nome do arquivo no cabeçalho Content-Disposition e sugerir o download.
A geração do PDF é síncrona internamente porque PDFSharp executa trabalho de CPU. Os métodos Web são assíncronos para permitir que o provider carregue configurações, logotipos ou regras da empresa em banco de dados ou serviço externo sem bloquear a requisição.
Também é possível obter o documento em memória:
DANFSeWebDocument documento = await danfse.GerarAsync(nota);
byte[] pdf = documento.Conteudo;
using Stream stream = documento.AbrirLeitura();
Multiempresa
Implemente INFSeConfigurationProvider<DANFSeNacionalWebOptions> para carregar logo,
layout, segurança e nomes de arquivo por empresa:
public sealed class ConfiguracaoDANFSePorEmpresa
: INFSeConfigurationProvider<DANFSeNacionalWebOptions>
{
public async ValueTask<DANFSeNacionalWebOptions> GetConfigurationAsync(
string tenantId,
CancellationToken cancellationToken = default)
{
var empresa = await CarregarEmpresaAsync(tenantId, cancellationToken);
return new DANFSeNacionalWebOptions
{
ForcarDownload = empresa.ForcarDownload,
NomeArquivoLote = $"DANFSe-{empresa.Documento}-Lote.pdf",
NomeArquivo = nota => $"DANFSe-{nota.Informacoes.NumeroNFSe}.pdf"
};
}
}
Registre o provider e informe o identificador da empresa durante a geração:
builder.Services.AddOpenDANFSeNacionalWeb<ConfiguracaoDANFSePorEmpresa>();
app.MapGet("/empresas/{empresaId}/danfse/{chave}", async (
string empresaId,
string chave,
IOpenDANFSeNacionalWeb danfse,
CancellationToken cancellationToken) =>
{
NotaFiscalServico nota = ObterNota(chave);
return await danfse.GerarResultadoAsync(
nota,
tenantId: empresaId,
cancellationToken: cancellationToken);
});
O provider deve retornar uma configuração independente para cada chamada. Não reutilize uma mesma instância mutável entre empresas, especialmente quando os logotipos ou as opções de segurança forem diferentes.
Configurações disponíveis
| Propriedade | Padrão | Finalidade |
|---|---|---|
Configuracoes |
nova configuração PDFSharp | Layout, logotipos, QR Code, margens e segurança do PDF. |
NomeArquivo |
DANFSe-{numero}.pdf |
Define o nome do documento individual. |
NomeArquivoLote |
DANFSe-Lote.pdf |
Define o nome do documento com várias notas. |
ForcarDownload |
false |
Envia Content-Disposition para sugerir o download. |
Geração em lote
NotaFiscalServico[] notas = await ObterNotasAsync(cancellationToken);
DANFSeWebDocument documento = await danfse.GerarAsync(
notas,
tenantId: empresaId,
cancellationToken: cancellationToken);
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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. |
-
net10.0
- OpenAC.Net.NFSe.Nacional.DANFSe.PDFSharp (>= 1.5.0.2)
- OpenAC.Net.NFSe.Nacional.Web (>= 1.5.0.2)
-
net8.0
- OpenAC.Net.NFSe.Nacional.DANFSe.PDFSharp (>= 1.5.0.2)
- OpenAC.Net.NFSe.Nacional.Web (>= 1.5.0.2)
-
net9.0
- OpenAC.Net.NFSe.Nacional.DANFSe.PDFSharp (>= 1.5.0.2)
- OpenAC.Net.NFSe.Nacional.Web (>= 1.5.0.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.