Geração de PDF em C# (.NET): melhores bibliotecas e exemplos de código

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): revisão de bibliotecas e exemplos práticos



A geração de documentos PDF é uma das tarefas mais comuns no desenvolvimento corporativo em C#. Relatórios, faturas, notas fiscais, contratos — tudo isso é conveniente de gerar programaticamente. No ecossistema .NET, existem várias bibliotecas maduras, cada uma com seus pontos fortes. Neste artigo, analisaremos quatro ferramentas principais, mostraremos exemplos de código e ajudaremos você a escolher a mais adequada para o seu projeto.



1. iTextSharp / iText 7 for .NET



iText — é, sem dúvida, a biblioteca mais conhecida para trabalhar com PDF. A versão iTextSharp foi uma porta da biblioteca Java para o .NET Framework. Atualmente, a versão relevante é iText 7 for .NET (licença AGPL para projetos open-source ou comercial).



Recursos:

  • Criação de PDF do zero
  • Trabalho com modelos (PdfTemplate)
  • Adição de imagens, tabelas, listas
  • Suporte a Unicode, cirílico
  • Assinatura digital, criptografia


Exemplo: documento simples com tabela

using iText.Kernel.Pdf;using iText.Layout;using iText.Layout.Element;

public void CreateSimplePdf(string filePath){ using (PdfWriter writer = new PdfWriter(filePath)) using (PdfDocument pdf = new PdfDocument(writer)) using (Document doc = new Document(pdf)) { doc.Add(new Paragraph("Olá, mundo!")); Table table = new Table(3); table.AddCell("Nome"); table.AddCell("Idade"); table.AddCell("Cidade"); table.AddCell("Ana"); table.AddCell("28"); table.AddCell("Moscou"); doc.Add(table); }}


2. PDFsharp / MigraDoc



PDFsharp — é uma biblioteca leve de código aberto (MIT). Em conjunto com MigraDoc, permite descrever documentos no estilo "processador de texto": parágrafos, estilos, cabeçalhos e rodapés. É ideal para gerar relatórios simples sem gráficos complexos.



Vantagens:

  • Baixa barreira de entrada
  • Bom suporte para cirílico
  • Não requer licenciamento
  • Funciona com .NET Framework e .NET Core


Exemplo: criação de documento com MigraDoc

using MigraDoc.DocumentObjectModel;using MigraDoc.Rendering;

public void CreateWithMigraDoc(string filePath){ Document doc = new Document(); Section section = doc.AddSection(); Paragraph para = section.AddParagraph("Título do relatório"); para.Format.Font.Size = 18; para.Format.Font.Bold = true; section.AddParagraph("Este é o texto do relatório. Gerado com PDFsharp e MigraDoc."); PdfDocumentRenderer renderer = new PdfDocumentRenderer(true); renderer.Document = doc; renderer.RenderDocument(); renderer.PdfDocument.Save(filePath);}


3. QuestPDF



QuestPDF — é uma biblioteca moderna com interface fluente (sintaxe semelhante ao LINQ). Distribuída sob licença MIT (gratuita para uso comercial). Está em desenvolvimento ativo e suporta .NET 6/7/8.



Principais recursos:

  • Construção declarativa de layout
  • Quebra automática de página
  • Suporte a imagens, SVG, códigos QR
  • Alto desempenho


Exemplo: geração de fatura

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

public byte[] GenerateInvoice(){ return 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(x => {

Recommendations