Ir para o conteúdo do rodapé
USANDO O IRONPDF

Crie um gerador de PDF em .NET Core com IronPDF.

O que torna um gerador de PDF .NET Core confiável?

Um gerador de PDF confiável for .NET Core deve oferecer renderização baseada no Chrome para conversão precisa de HTML para PDF, suportar implantação multiplataforma sem dependências nativas e fornecer uma API completa para criar, editar e manipular documentos PDF em ambientes conteinerizados.

O IronPDF fornece uma biblioteca PDF baseada no Chrome e no .NET Core que converte HTML em PDF sem dependências nativas, permitindo uma implantação tranquila em Docker e compatibilidade entre plataformas para engenheiros que desenvolvem aplicativos em contêineres.

A criação de documentos PDF em aplicações .NET Core requer uma biblioteca PDF que manipule conteúdo HTML, mantenha a formatação e ofereça suporte à implantação multiplataforma. Seja você um desenvolvedor de APIs web ASP.NET Core ou de aplicativos de console, um gerador de PDF .NET Core confiável simplifica o processo de criação de documentos a partir de diversas fontes.

Inicie um teste gratuito e descubra por que os desenvolvedores escolhem o IronPDF para geração de PDFs de missão crítica em ambientes de produção.

IronPDF se destaca como uma biblioteca PDF completa for .NET Core . Ele utiliza um mecanismo de renderização do Chrome para criar documentos PDF com precisão perfeita em cada pixel. Essa abordagem permite que você utilize seus conhecimentos de HTML e CSS para gerar arquivos PDF sem precisar aprender APIs complexas de layout de PDF. A extensa documentação e os exemplos de código da biblioteca facilitam a implementação.

Por que a renderização baseada no Chrome é importante para a geração de PDFs?

A renderização baseada no Chrome garante que cada regra CSS, fonte e diretiva de layout seja avaliada da mesma forma que um navegador moderno a avaliaria. Isso significa que as grades flexbox, as media queries e as fontes da web se comportam de maneira previsível no PDF de saída — sem surpresas de um mecanismo de renderização legado que interpreta incorretamente o CSS moderno.

Quais opções de implantação multiplataforma são suportadas?

O IronPDF funciona no Windows , Linux , Azure , AWS e Docker sem alterar uma única linha de código do aplicativo. O pacote NuGet inclui todos os binários nativos necessários, portanto você não precisa instalar pacotes do sistema nem gerenciar caminhos específicos da plataforma.

A maioria das alternativas se divide em duas categorias: APIs de desenho de PDF de baixo nível que exigem o posicionamento manual de cada elemento, ou ferramentas de criação de relatórios que fixam o conteúdo em modelos rígidos. O IronPDF situa-se entre esses extremos: aceita HTML e CSS padrão, renderiza-os com um mecanismo de navegador completo e salva o resultado como um arquivo PDF compatível com os padrões.

IronPDF versus alternativas comuns para PDF em .NET
Recurso IronPDF PdfSharp iTextSharp Selecionar PDF
Renderização HTML + CSS Motor Chrome Nenhum Limitado (iText 7) WebKit
Execução de JavaScript Sim Não Não Parcial
Suporte para Linux/Docker Sim Sim Sim Limitado
Modelo de licença Comercial MIT AGPL / Comercial Comercial
Formulários PDF interativos Sim Não Sim Não

Como o IronPDF simplifica a geração de documentos PDF no .NET Core?

O IronPDF transforma a tarefa tradicionalmente complexa de geração de PDFs em um código simples que qualquer desenvolvedor .NET pode implementar. A biblioteca utiliza a classe ChromePdfRenderer para converter strings HTML , arquivos ou URLs diretamente para o formato PDF. Essa abordagem de API fluente oferece amplas opções de personalização , mantendo o alto desempenho em diferentes plataformas.

O verdadeiro poder reside na forma como o IronPDF lida com a conversão de conteúdo HTML em arquivos PDF profissionais. Em vez de posicionar ou desenhar elementos manualmente, você escreve HTML padrão com estilos CSS, e a biblioteca cuida da conversão. Os arquivos PDF resultantes são documentos completos, nos quais os usuários podem selecionar e pesquisar texto , e não apenas imagens de uma página.

Além da geração básica de PDFs, as ferramentas avançadas de edição do IronPDF permitem mesclar documentos , adicionar marcas d'água , inserir anotações e muito mais.

O padrão principal é: criar um ChromePdfRenderer, configurar seu RenderingOptions, chamar um dos três métodos de renderização (RenderHtmlAsPdf, RenderHtmlFileAsPdf ou RenderUrlAsPdf) e salvar o PdfDocument resultante. Os três métodos retornam o mesmo tipo de objeto, portanto o código de pós-processamento é reutilizável independentemente da origem.

Por que escolher a conversão de HTML para PDF em vez das APIs de PDF tradicionais?

As APIs tradicionais de PDF obrigam você a pensar em coordenadas -- "coloque este texto em x=72, y=144". O HTML permite que você pense em termos de conteúdo e estrutura. Quando os requisitos mudam (uma nova coluna, um tamanho de fonte diferente, um logotipo da empresa), você atualiza um modelo HTML em vez de recalcular dezenas de valores de coordenadas.

Como lidar com layouts e estilos de documentos complexos?

Passe um documento HTML completo -- incluindo um bloco <style> ou uma referência de folha de estilo externa -- para RenderHtmlAsPdf. O mecanismo Chrome do IronPDF aplica todas as regras CSS antes de rasterizar a página. Você pode usar CSS responsivo , fontes do Google, gráficos SVG e CSS Grid sem restrições.

Como instalar o IronPDF através do gerenciador de pacotes NuGet ?

Para começar a usar o IronPDF no Visual Studio, basta instalar um único pacote NuGet . Abra o Console do Gerenciador de Pacotes NuGet e execute:

Install-Package IronPdf
Install-Package IronPdf
SHELL

Ou, usando a CLI do .NET :

dotnet add package IronPdf
dotnet add package IronPdf
SHELL

Este pacote único fornece toda a funcionalidade necessária para criar, editar e gerar arquivos PDF em aplicações .NET Core . A instalação configura automaticamente o projeto para geração de PDFs em ambientes Windows, Linux e Docker. Os ambientes de execução suportados incluem .NET Framework 4.6.2+, .NET Core 3.1+, .NET 5 até .NET 10 e .NET Standard 2.0+.

Quais são os requisitos de sistema para o IronPDF?

Não Windows, o pacote é autossuficiente. Não Linux, o mecanismo de renderização do Chrome precisa de algumas bibliotecas compartilhadas (libgdiplus, libc6 e alguns pacotes de fontes), que o guia de configuração do Linux lista detalhadamente. As implementações do Docker devem começar a partir da imagem base oficial do IronPDF para evitar dependências ausentes.

Para verificar a instalação, adicione using IronPdf; a um arquivo de classe. Se o projeto for compilado sem erros e o IntelliSense resolver ChromePdfRenderer, o pacote foi instalado corretamente. Como teste rápido, gere uma string HTML de uma linha e confirme se um PDF com tamanho de byte diferente de zero foi gravado no disco.

Que dependências adicionais podem ser necessárias?

Em ambientes conteinerizados, inclua os pacotes libgdiplus e libx11-dev no seu Dockerfile. Funções em nuvem com orçamentos de tamanho restritos podem migrar para o IronPDF , que separa o mecanismo de renderização em um contêiner auxiliar. A página do pacote NuGet IronPDF lista todas as versões disponíveis e as notas de lançamento.

Como criar seu primeiro documento PDF a partir de HTML?

O exemplo abaixo cria um documento de fatura dinâmico a partir de uma string HTML — um padrão que pode ser diretamente aplicado a qualquer tipo de documento que combine um modelo fixo com dados em tempo de execução:

using IronPdf;
using System.Text;

// Configure the Chrome renderer
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;

// Build HTML content with embedded CSS and dynamic data
var htmlBuilder = new StringBuilder();
htmlBuilder.Append(@"
    <html>
    <head>
        <style>
            body { font-family: Arial, sans-serif; font-size: 14px; }
            .invoice-header { background: #f0f0f0; padding: 20px; }
            table { width: 100%; border-collapse: collapse; }
            th, td { padding: 10px; text-align: left; border-bottom: 1px solid #ddd; }
        </style>
    </head>
    <body>
        <div class='invoice-header'>
            <h1>Invoice #INV-2024-001</h1>
            <p>Date: " + DateTime.Nãow.ToString("MM/dd/yyyy") + @"</p>
        </div>
        <table>
            <tr><th>Item</th><th>Quantity</th><th>Price</th></tr>");

for (int i = 0; i < 3; i++)
{
    htmlBuilder.Append($"<tr><td>Product #{i + 1}</td><td>{i + 1}</td><td>$25.00</td></tr>");
}

htmlBuilder.Append(@"
        </table>
        <p><strong>Total: $75.00</strong></p>
    </body>
    </html>");

// Convert HTML string to a PDF document and save
PdfDocument pdfDoc = renderer.RenderHtmlAsPdf(htmlBuilder.ToString());
pdfDoc.SaveAs("invoice.pdf");
using IronPdf;
using System.Text;

// Configure the Chrome renderer
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;

// Build HTML content with embedded CSS and dynamic data
var htmlBuilder = new StringBuilder();
htmlBuilder.Append(@"
    <html>
    <head>
        <style>
            body { font-family: Arial, sans-serif; font-size: 14px; }
            .invoice-header { background: #f0f0f0; padding: 20px; }
            table { width: 100%; border-collapse: collapse; }
            th, td { padding: 10px; text-align: left; border-bottom: 1px solid #ddd; }
        </style>
    </head>
    <body>
        <div class='invoice-header'>
            <h1>Invoice #INV-2024-001</h1>
            <p>Date: " + DateTime.Nãow.ToString("MM/dd/yyyy") + @"</p>
        </div>
        <table>
            <tr><th>Item</th><th>Quantity</th><th>Price</th></tr>");

for (int i = 0; i < 3; i++)
{
    htmlBuilder.Append($"<tr><td>Product #{i + 1}</td><td>{i + 1}</td><td>$25.00</td></tr>");
}

htmlBuilder.Append(@"
        </table>
        <p><strong>Total: $75.00</strong></p>
    </body>
    </html>");

// Convert HTML string to a PDF document and save
PdfDocument pdfDoc = renderer.RenderHtmlAsPdf(htmlBuilder.ToString());
pdfDoc.SaveAs("invoice.pdf");
Imports IronPdf
Imports System.Text

' Configure the Chrome renderer
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.MarginTop = 25
renderer.RenderingOptions.MarginBottom = 25
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4

' Build HTML content with embedded CSS and dynamic data
Dim htmlBuilder As New StringBuilder()
htmlBuilder.Append("
    <html>
    <head>
        <style>
            body { font-family: Arial, sans-serif; font-size: 14px; }
            .invoice-header { background: #f0f0f0; padding: 20px; }
            table { width: 100%; border-collapse: collapse; }
            th, td { padding: 10px; text-align: left; border-bottom: 1px solid #ddd; }
        </style>
    </head>
    <body>
        <div class='invoice-header'>
            <h1>Invoice #INV-2024-001</h1>
            <p>Date: " & DateTime.Now.ToString("MM/dd/yyyy") & "</p>
        </div>
        <table>
            <tr><th>Item</th><th>Quantity</th><th>Price</th></tr>")

For i As Integer = 0 To 2
    htmlBuilder.Append($"<tr><td>Product #{i + 1}</td><td>{i + 1}</td><td>$25.00</td></tr>")
Next

htmlBuilder.Append("
        </table>
        <p><strong>Total: $75.00</strong></p>
    </body>
    </html>")

' Convert HTML string to a PDF document and save
Dim pdfDoc As PdfDocument = renderer.RenderHtmlAsPdf(htmlBuilder.ToString())
pdfDoc.SaveAs("invoice.pdf")
$vbLabelText   $csharpLabel

Observe como o CSS reside dentro do bloco <style> e é aplicado automaticamente durante a renderização. O método RenderHtmlAsPdf retorna um objeto PdfDocument, dando controle total sobre o arquivo gerado. Para cenários mais avançados, explore margens e tamanhos de papel personalizados. Ambas as opções permitem personalizar a saída para corresponder às especificações exatas de impressão ou às diretrizes da marca, sem alterar o modelo HTML subjacente.

Qual é a aparência do PDF gerado?

A captura de tela abaixo mostra a fatura de exemplo perfeitamente convertida em um documento PDF.

Professional PDF invoice displaying Invoice #INV-2024-001 with date 10/15/2025, featuring a light gray header section, organized product table showing three items with quantities and $25 unit prices, including company branding elements and a summary paragraph at the bottom

Como você lida com dados dinâmicos e modelos?

Para documentos baseados em dados, preencha uma string de modelo HTML com valores de um banco de dados ou API antes de passá-la para o renderizador. Bibliotecas como Scriban ou Handlebars .NET fornecem sintaxe de modelagem que mantém o HTML limpo e evita a concatenação frágil de strings em código de produção.

Quais são as opções de renderização comuns que você deve configurar?

As opções de maior impacto são PaperSize, MarginRight, PrintHtmlBackgrounds e CssMediaType. A configuração CssMediaType para Print aplica suas regras CSS @media print, que é a escolha correta para documentos destinados à impressão ou ao salvamento como arquivos PDF.

Ao depurar problemas de renderização de HTML, renderize o mesmo HTML em um navegador primeiro. Se estiver correto lá, o IronPDF o reproduzirá fielmente. Para evitar desvios de layout, verifique se nenhum elemento usa unidades relativas à viewport (vw, vh) sem uma unidade alternativa -- essas unidades se comportam de maneira diferente quando não há uma viewport com rolagem.

Como gerar arquivos PDF a partir de URLs e páginas da web?

O IronPDF se destaca na conversão de páginas da web existentes em arquivos PDF. Essa funcionalidade é valiosa ao gerar documentos PDF a partir de painéis de relatórios ou formulários online:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

// Wait for all assets to finish loading before capturing
renderer.RenderingOptions.WaitFor.RenderDelay(1000);

PdfDocument pdfDocument = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");

string filePath = Path.Combine(Directory.GetCurrentDirectory(), "webpage.pdf");
pdfDocument.SaveAs(filePath);
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

// Wait for all assets to finish loading before capturing
renderer.RenderingOptions.WaitFor.RenderDelay(1000);

PdfDocument pdfDocument = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");

string filePath = Path.Combine(Directory.GetCurrentDirectory(), "webpage.pdf");
pdfDocument.SaveAs(filePath);
Imports IronPdf
Imports System.IO

Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
renderer.RenderingOptions.PrintHtmlBackgrounds = True
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print

' Wait for all assets to finish loading before capturing
renderer.RenderingOptions.WaitFor.RenderDelay(1000)

Dim pdfDocument As PdfDocument = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page")

Dim filePath As String = Path.Combine(Directory.GetCurrentDirectory(), "webpage.pdf")
pdfDocument.SaveAs(filePath)
$vbLabelText   $csharpLabel

A biblioteca gerencia a execução de JavaScript , carrega imagens e folhas de estilo externas e mantém o layout responsivo durante a conversão. Saiba mais sobre como converter URLs em PDF no guia de URL para PDF . Você também pode configurar os cabeçalhos de solicitação HTTP para autenticação e gerenciar cookies para conteúdo baseado em sessão.

Página principal da Wikipédia convertida para formato PDF, preservando o layout completo, incluindo o artigo biográfico de Jozo Tomasevich, a seção de notícias com eventos atuais e o conteúdo histórico Neste dia de 15 de outubro, demonstrando a capacidade do IronPDF de manter layouts complexos com várias colunas, imagens e os elementos de design característicos da Wikipédia

Como você lida com a autenticação para URLs protegidas?

Passe cabeçalhos HTTP personalizados ou cookies para o renderizador antes de chamar RenderUrlAsPdf. Para painéis protegidos por OAuth, recupere um token de portador no código do seu aplicativo e adicione-o como um cabeçalho Authorization. O IronPDF encaminha esses cabeçalhos para o mecanismo do Chrome exatamente da mesma forma que um navegador os enviaria.

Quais opções de renderização em JavaScript você deve considerar?

Habilite EnableJavaScript e adicione um WaitFor.RenderDelay quando a página preencher gráficos ou tabelas via JavaScript após o carregamento da página. Para aplicações de página única, WaitFor.NetworkIdle() é um gatilho mais confiável do que um atraso fixo, pois aguarda até que todas as solicitações de rede pendentes sejam concluídas.

Quando devo usar a conversão de URL em vez da conversão de string HTML?

Use a conversão de URL quando a página já existir e for acessível a partir do servidor que executa o IronPDF — relatórios, painéis e visualizações administrativas são bons exemplos. Use a conversão de strings HTML ao criar documentos a partir de modelos em tempo de execução, pois essa abordagem evita uma requisição à rede e mantém todos os dados no servidor.

Quais recursos avançados de PDF estão disponíveis para relatórios complexos?

Documentos PDF profissionais geralmente exigem cabeçalhos, rodapés e campos de formulário interativos além do conteúdo básico. O IronPDF oferece métodos para adicionar cabeçalhos, rodapés e marcas d'água . A API de cabeçalhos e rodapés oferece controle total sobre a apresentação do documento:

var renderer = new ChromePdfRenderer();

// Company header on every page
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    MaxHeight = 25,
    HtmlFragment = "<div style='text-align:center;font-weight:bold;'>Company Report</div>"
};

// Automatic page numbering in footer
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    MaxHeight = 25,
    HtmlFragment = "<div style='text-align:right;'>Page {page} of {total-pages}</div>"
};

// Render an HTML form as a fillable PDF form
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

string formHtml = @"
    <form>
        <label>Name:</label>
        <input type='text' name='name' placeholder='Enter your name'/>
        <label>Email:</label>
        <input type='email' name='email' placeholder='email@example.com'/>
        <button type='submit'>Submit</button>
    </form>";

PdfDocument formDocument = renderer.RenderHtmlAsPdf(formHtml);
formDocument.SaveAs("form.pdf");
var renderer = new ChromePdfRenderer();

// Company header on every page
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    MaxHeight = 25,
    HtmlFragment = "<div style='text-align:center;font-weight:bold;'>Company Report</div>"
};

// Automatic page numbering in footer
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    MaxHeight = 25,
    HtmlFragment = "<div style='text-align:right;'>Page {page} of {total-pages}</div>"
};

// Render an HTML form as a fillable PDF form
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

string formHtml = @"
    <form>
        <label>Name:</label>
        <input type='text' name='name' placeholder='Enter your name'/>
        <label>Email:</label>
        <input type='email' name='email' placeholder='email@example.com'/>
        <button type='submit'>Submit</button>
    </form>";

PdfDocument formDocument = renderer.RenderHtmlAsPdf(formHtml);
formDocument.SaveAs("form.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

' Company header on every page
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
    .MaxHeight = 25,
    .HtmlFragment = "<div style='text-align:center;font-weight:bold;'>Company Report</div>"
}

' Automatic page numbering in footer
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
    .MaxHeight = 25,
    .HtmlFragment = "<div style='text-align:right;'>Page {page} of {total-pages}</div>"
}

' Render an HTML form as a fillable PDF form
renderer.RenderingOptions.CreatePdfFormsFromHtml = True

Dim formHtml As String = "
    <form>
        <label>Name:</label>
        <input type='text' name='name' placeholder='Enter your name'/>
        <label>Email:</label>
        <input type='email' name='email' placeholder='email@example.com'/>
        <button type='submit'>Submit</button>
    </form>"

Dim formDocument As PdfDocument = renderer.RenderHtmlAsPdf(formHtml)
formDocument.SaveAs("form.pdf")
$vbLabelText   $csharpLabel

Este exemplo demonstra como aplicar cabeçalhos consistentes em todas as páginas e criar campos de formulário interativos dentro do documento PDF. O mecanismo lida automaticamente com a numeração de páginas e a renderização de campos de formulário. Para relatórios complexos, implemente sumários , marcadores e quebras de página personalizadas .

Formulário PDF interativo com cabeçalho "Relatório da Empresa", campos de entrada de Nãome e E-mail com estilo profissional, bordas visíveis e texto de exemplo, botão Enviar com efeito de foco, demonstrando a capacidade do IronPDF de converter formulários HTML em documentos PDF preenchíveis, preservando o estilo e a funcionalidade.

Como criar relatórios com várias páginas e cabeçalhos consistentes?

Configure HtmlHeader e HtmlFooter no renderizador antes de chamar qualquer método de renderização. O HTML do cabeçalho e do rodapé é renderizado separadamente do corpo do texto e inserido automaticamente em todas as páginas. Use os tokens {page} e {total-pages} em qualquer lugar no fragmento do rodapé para adicionar numeração dinâmica.

Que elementos interativos você pode adicionar aos PDFs?

Com o recurso CreatePdfFormsFromHtml ativado, os controles de formulário HTML padrão — entradas de texto, caixas de seleção, botões de opção, listas suspensas e botões — tornam-se campos de formulário PDF interativos. Os destinatários podem preenchê-los no Adobe Acrobat Reader ou em qualquer visualizador de PDF compatível com os padrões, sem a necessidade de software especial.

Como implementar quebras de página e gerenciamento de seções?

Insira <div style='page-break-after: always;'></div> entre as seções HTML que devem começar em uma nova página. O IronPDF respeita as propriedades CSS page-break-after, page-break-before e page-break-inside, oferecendo o mesmo controle que uma folha de estilo de impressão.

Como melhorar o desempenho com operações assíncronas no ASP.NET Core?

Para aplicações web que lidam com múltiplas solicitações de geração de PDF, as operações assíncronas melhoram a capacidade de resposta, liberando threads enquanto o mecanismo do Chrome renderiza:

using IronPdf;
using Microsoft.AspNetCore.Mvc;

// Reusable async PDF generation helper
async Task<byte[]> GeneratePdfAsync(string htmlContent)
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
    PdfDocument pdf = await renderer.RenderHtmlAsPdfAsync(htmlContent);
    return pdf.BinaryData;
}

// ASP.NET Core minimal API endpoint
app.MapPost("/invoices", async ([FromBody] InvoiceData data) =>
{
    string html = BuildInvoiceHtml(data);
    byte[] pdfBytes = await GeneratePdfAsync(html);
    return Results.File(pdfBytes, "application/pdf", "invoice.pdf");
});
using IronPdf;
using Microsoft.AspNetCore.Mvc;

// Reusable async PDF generation helper
async Task<byte[]> GeneratePdfAsync(string htmlContent)
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
    PdfDocument pdf = await renderer.RenderHtmlAsPdfAsync(htmlContent);
    return pdf.BinaryData;
}

// ASP.NET Core minimal API endpoint
app.MapPost("/invoices", async ([FromBody] InvoiceData data) =>
{
    string html = BuildInvoiceHtml(data);
    byte[] pdfBytes = await GeneratePdfAsync(html);
    return Results.File(pdfBytes, "application/pdf", "invoice.pdf");
});
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc

' Reusable async PDF generation helper
Async Function GeneratePdfAsync(htmlContent As String) As Task(Of Byte())
    Dim renderer As New ChromePdfRenderer()
    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
    Dim pdf As PdfDocument = Await renderer.RenderHtmlAsPdfAsync(htmlContent)
    Return pdf.BinaryData
End Function

' ASP.NET Core minimal API endpoint
app.MapPost("/invoices", Async Function(<FromBody> data As InvoiceData) As Task(Of IResult)
    Dim html As String = BuildInvoiceHtml(data)
    Dim pdfBytes As Byte() = Await GeneratePdfAsync(html)
    Return Results.File(pdfBytes, "application/pdf", "invoice.pdf")
End Function)
$vbLabelText   $csharpLabel

Esse padrão permite que aplicativos ASP.NET Core gerem arquivos PDF sem bloquear o pool de threads. A saída em formato de array de bytes funciona para endpoints de API que retornam arquivos diretamente para os clientes. Para operações em lote, considere o processamento paralelo para renderizar vários documentos simultaneamente e fluxos de memória para reduzir a sobrecarga de leitura/gravação em disco.

O método Results.File() define o tipo de conteúdo application/pdf correto para que os navegadores solicitem o download ou exibam o arquivo diretamente. Para mais informações sobre padrões assíncronos no ASP.NET Core, consulte a documentação oficial da Microsoft .

Quais são as melhores práticas para lidar com a geração simultânea de PDFs?

Cada instância de ChromePdfRenderer não é thread-safe, portanto, crie uma nova instância por solicitação em vez de compartilhar uma entre threads. Para cenários de alto desempenho, utilize um pool de instâncias ou um contêiner sidecar dedicado do IronPDF Engine para descarregar a renderização do processo principal do aplicativo.

Como implementar um tratamento de erros adequado em operações assíncronas?

Envolva a chamada de renderização em um bloco try/catch. O IronPDF lança IronPdfNativeException para erros de nível de mecanismo (fontes ausentes, HTML inválido, tempo limite excedido) e exceções padrão do .NET para problemas de leitura/gravação de arquivos. Registre os detalhes da exceção e retorne uma resposta de erro HTTP apropriada, em vez de deixar a exceção se propagar para o cliente.

Retorna PdfDocument.BinaryData diretamente na resposta HTTP quando o PDF for consumido imediatamente. Escreva em um caminho de arquivo com SaveAs somente quando o PDF precisar ser armazenado de forma persistente -- por exemplo, em um bucket de armazenamento de objetos ou em um compartilhamento de arquivos. Evitar gravações desnecessárias em disco reduz a latência para endpoints de PDF de alta frequência.

Quais são as principais considerações de implantação?

O IronPDF suporta implantação em diversos ambientes. Para contêineres Docker, inclua as dependências necessárias em um Dockerfile , conforme descrito no guia de implantação do Docker. A biblioteca funciona no Windows Server , em distribuições Linux e em plataformas de nuvem como Azure e AWS . Cada ambiente pode exigir configurações específicas para fontes e renderização, mas a API principal permanece consistente.

Para implantações em contêineres, considere usar o IronPDF como um contêiner remoto para separar a geração de PDFs da aplicação principal. Essa abordagem melhora a escalabilidade e permite uma melhor gestão de recursos. A documentação da Microsoft sobre a implementação do .NET Core aborda práticas recomendadas adicionais para ambientes de produção.

Como configurar o IronPDF para implantações em Docker?

Comece com a imagem base oficial do IronPDF para Linux ou adicione os pacotes apt necessários a uma imagem Debian ou Ubuntu existente. Defina Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuMode.Disabled no código de inicialização do aplicativo para evitar erros de inicialização da GPU em ambientes de servidor sem interface gráfica.

Quais dependências específicas do Linux você deve incluir?

O conjunto mínimo é libgdiplus, libc6, libx11-6, libxext6 e libxcomposite1. Para suporte a fontes CJK (chinês, japonês, coreano), adicione fonts-noto-cjk. O guia de instalação do Linux fornece listas de pacotes específicos para cada distribuição: Debian, Ubuntu, CentOS e Alpine.

Para observabilidade em produção, envolva as chamadas RenderHtmlAsPdfAsync com temporizadores e emita métricas para o Application Insights, Prometheus ou qualquer backend compatível com OpenTelemetry. Monitore os percentis de latência p50/p95/p99 e as taxas de erro separadamente do restante do aplicativo para identificar gargalos de renderização precocemente.

Quais são as considerações de segurança aplicáveis ​​aos serviços de geração de PDF?

Ao renderizar URLs ou HTML fornecido pelo usuário, higienize o conteúdo para evitar falsificação de solicitação do lado do servidor (SSRF). Restrinja os hosts que RenderUrlAsPdf pode acessar usando uma lista de permissões e execute o mecanismo de renderização em um processo em sandbox ou contêiner isolado. Para documentos que contenham dados sensíveis, aplique criptografia PDF e assinaturas digitais para atender aos requisitos de conformidade.

Está pronto para começar a criar seu gerador de PDF for .NET Core ?

O IronPDF transforma a geração de PDFs no .NET Core de um desafio complexo em uma implementação simples. Com suporte para conteúdo HTML, um conjunto robusto de recursos e comportamento consistente em todas as plataformas, ele é ideal para desenvolvedores que precisam gerar documentos PDF de forma confiável. Os recursos de segurança da biblioteca, incluindo criptografia e assinaturas digitais, garantem que os documentos atendam aos requisitos de conformidade.

Comece com um teste gratuito para explorar todos os recursos sem limitações. A documentação fornece exemplos e guias abrangentes para ajudar a criar arquivos PDF profissionais que atendam aos requisitos exatos. Seja para criar sistemas de faturamento, gerar relatórios ou converter conteúdo web existente, o IronPDF oferece as ferramentas para entregar resultados perfeitos em cada detalhe.

Para implantações em produção, explore opções de licenciamento que se adequem à escala do projeto. Uma biblioteca de PDFs de qualidade traz benefícios através da redução do tempo de desenvolvimento e da obtenção de resultados consistentes e profissionais em todas as aplicações .NET . A equipe de suporte e os guias de solução de problemas do IronPDF garantem que você nunca fique preso ao implementar a funcionalidade de PDF.

Perguntas frequentes

Qual é a função principal do IronPDF no .NET Core?

O IronPDF é usado principalmente para converter HTML em PDF em aplicações .NET Core, permitindo que os desenvolvedores criem faturas, relatórios e outros documentos com renderização perfeita em cada pixel.

Como o IronPDF garante uma renderização perfeita em cada pixel?

O IronPDF garante uma renderização perfeita em cada pixel, utilizando técnicas avançadas de renderização que convertem com precisão HTML, CSS e JavaScript em documentos PDF de alta qualidade.

É possível usar o IronPDF para gerar relatórios no .NET Core?

Sim, o IronPDF é capaz de gerar relatórios detalhados em .NET Core, convertendo modelos de relatório baseados em HTML em documentos PDF de nível profissional.

É possível converter páginas da web para PDF usando o IronPDF?

Com certeza, o IronPDF pode converter páginas da web inteiras para PDF, preservando o layout e o estilo especificados no HTML e CSS originais.

Quais são alguns casos de uso comuns para o IronPDF?

Os casos de uso mais comuns do IronPDF incluem a geração de faturas, a criação de relatórios comerciais, a conversão de formulários HTML para PDF e o arquivamento de conteúdo da web.

O IronPDF é compatível com aplicações .NET Core?

Sim, o IronPDF oferece suporte completo a aplicativos .NET Core, tornando-se uma opção versátil para desenvolvedores que trabalham em diferentes plataformas .NET.

Como o IronPDF lida com CSS e JavaScript na conversão de HTML para PDF?

O IronPDF processa CSS e JavaScript durante o processo de conversão para garantir que o layout visual e o conteúdo dinâmico do HTML sejam representados com precisão no PDF.

O IronPDF consegue gerar PDFs a partir de strings HTML?

Sim, o IronPDF pode gerar PDFs a partir de strings HTML, permitindo que os desenvolvedores criem documentos PDF dinamicamente a partir do conteúdo HTML gerado em seus aplicativos.

É possível personalizar a aparência de PDFs com o IronPDF?

O IronPDF oferece amplas opções de personalização, permitindo que os desenvolvedores controlem a aparência dos PDFs, especificando cabeçalhos, rodapés e estilos personalizados usando HTML e CSS.

Quais as vantagens que o IronPDF oferece em relação a outras bibliotecas PDF for .NET?

O IronPDF oferece diversas vantagens, incluindo fácil integração com o .NET Core, renderização de alta qualidade, suporte para layouts de documentos complexos e um sólido gerenciamento de HTML, CSS e JavaScript.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim