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.CoreExemplo 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 => Também na biblioteca
Trabalhando com arquivos ZIP em PHP: guia completo sobre ZipArchive
Parsing de HTML em C# (.NET): bibliotecas HtmlAgilityPack e AngleSharp
Geração de relatórios PDF em Rust: bibliotecas e exemplos práticos
Registro para Kotlin: melhores soluções e bibliotecas