Geração de PDF em C# (.NET): Guia Completo de Bibliotecas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Geração de PDF em C# (.NET): Visão geral das melhores bibliotecas



A geração de documentos PDF é uma das tarefas comuns em aplicações corporativas e web em C#. Relatórios, faturas, notas fiscais, certificados — tudo isso é conveniente de gerar no formato PDF. No ecossistema .NET, existem várias bibliotecas poderosas, tanto pagas quanto gratuitas. Neste artigo, analisaremos as ferramentas mais populares, suas funcionalidades e forneceremos exemplos de código.



Bibliotecas populares para trabalhar com PDF em .NET



  • iTextSharp / iText 7 — uma das bibliotecas mais antigas e funcionais. Versão paga (iText 7) para uso comercial, mas existe a versão legada iTextSharp sob LGPL.
  • PdfSharp / MigraDoc — biblioteca gratuita de código aberto. Ideal para documentos e relatórios simples.
  • QuestPDF — biblioteca moderna com fluent API. Gratuita para uso comercial (licença MIT). Permite criar documentos complexos com código mínimo.
  • IronPDF — biblioteca paga, mas com funcionalidades muito poderosas: conversão de HTML para PDF, trabalho com formulários, proteção por senha.
  • SelectPdf — outra ferramenta paga com suporte a HTML para PDF e muitas configurações.


Instalação de bibliotecas via NuGet



Todas as bibliotecas são instaladas da forma padrão através do gerenciador de pacotes NuGet. Exemplos de instalação:



// Para PdfSharpInstall-Package PdfSharp

// Para QuestPDFInstall-Package QuestPDF

// Para iTextSharp (legado)Install-Package iTextSharp.LGPLv2.Core


Exemplo 1: Criando PDF com PdfSharp



PdfSharp é uma excelente escolha para tarefas simples. Abaixo, um exemplo de criação de documento com texto e tabela:



using PdfSharp.Pdf;using PdfSharp.Drawing;

class Program{ static void Main() { // Criamos um novo documento PDF PdfDocument document = new PdfDocument(); PdfPage page = document.AddPage(); XGraphics gfx = XGraphics.FromPdfPage(page);

// Desenhamos texto XFont font = new XFont("Arial", 14); gfx.DrawString("Olá, mundo PDF!", font, XBrushes.Black, new XRect(10, 10, page.Width, page.Height), XStringFormats.TopLeft);

// Salvamos o documento document.Save("HelloWorld.pdf"); Console.WriteLine("PDF criado!"); }}


Exemplo 2: Geração de relatório com QuestPDF



QuestPDF oferece um elegante Fluent API. Vamos criar uma fatura simples:



using QuestPDF.Fluent;using QuestPDF.Helpers;using QuestPDF.Infrastructure;

class Program{ static void Main() { Document.Create(container => { container.Page(page => { page.Size(PageSizes.A4); page.Margin(2, Unit.Centimetre); page.DefaultTextStyle(x => x.FontSize(12));

page.Header().Element(ComposeHeader); page.Content().Element(ComposeContent); page.Footer().AlignCenter().Text("Página {0} de {1}", x => x.CurrentPageNumber(), x => x.TotalPages()); }); }).GeneratePdf("Invoice.pdf");

Console.WriteLine("Fatura criada!"); }

static void ComposeHeader(IContainer container) { container.Row(row => { row.RelativeItem().Column(column => { column.Item().Text("FATURA").Bold().FontSize(20); column.Item().Text($"Data: {DateTime.Now:dd.MM.yyyy}"); }); row.ConstantItem(100).Image(Placeholders.Image(100, 100)); }); }

static void ComposeContent(IContainer container) { container.Table(table => { // Cabeçalhos da tabela table.ColumnsDefinition(columns =>

Recommendations