Geração de relatórios PDF em C# (.NET): iTextSharp, QuestPDF, PDFsharp

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 relatórios PDF em C# (.NET): visão geral das melhores bibliotecas



Criar relatórios PDF é uma das tarefas mais comuns em aplicações corporativas em C# (.NET). Seja para exportar dados para o cliente, gerar uma fatura ou um painel analítico complexo — você precisará de uma ferramenta confiável. Neste artigo, analisaremos três bibliotecas principais: iTextSharp (e seu sucessor iText 7), QuestPDF e PDFsharp. Você descobrirá qual escolher para cada tarefa específica e verá exemplos práticos de código.



1. iTextSharp / iText 7 — clássico e poderoso



iTextSharp é uma adaptação da popular biblioteca Java iText para .NET. A versão iText 7 (pacote NuGet itext7) foi completamente reescrita e oferece uma API moderna. A biblioteca permite criar PDFs do zero, editar documentos existentes, adicionar marcas d'água, formulários, marcadores e metadados.



Principais funcionalidades:

  • Controle total sobre a estrutura do documento (parágrafos, tabelas, imagens, listas).
  • Suporte a fontes, incluindo cirílicas (TrueType).
  • Trabalho com formulários (AcroForms) e assinaturas digitais.
  • Licença: AGPL (uso comercial requer aquisição de licença).


Exemplo: criando um relatório simples com tabela

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

public void CreateReport(string filePath){ using (var writer = new PdfWriter(filePath)) using (var pdf = new PdfDocument(writer)) using (var document = new Document(pdf)) { document.Add(new Paragraph("Relatório de Vendas") .SetFontSize(20).SetBold());

Table table = new Table(3); table.AddCell("Produto"); table.AddCell("Quantidade"); table.AddCell("Preço");

table.AddCell("Notebook"); table.AddCell("10"); table.AddCell("75000");

table.AddCell("Mouse"); table.AddCell("50"); table.AddCell("1500");

document.Add(table); }}


2. QuestPDF — API moderna e concisa



QuestPDF é uma biblioteca relativamente nova (desde 2021) que vem ganhando popularidade rapidamente. Sua principal característica é a Fluent API, que lembra o trabalho com HTML/CSS. O código fica legível e compacto. O QuestPDF é totalmente gratuito para uso comercial (licença MIT).



Características:

  • Descrição declarativa do layout: contêineres, colunas, linhas.
  • Suporte integrado a estilos, cores, bordas e fundos.
  • Quebra automática de texto e ajuste de tabelas.
  • Exportação para PDF e XPS.


Exemplo: criando um relatório com QuestPDF

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

public void CreateInvoice(string filePath){ Document.Create(container => { container.Page(page => { page.Size(PageSizes.A4); page.Margin(2, Unit.Centimetre); page.DefaultTextStyle(x => x.FontSize(12));

page.Header().Text("Fatura nº123") .SemiBold().FontSize(24).FontColor(Colors.Blue.Darken2);

page.Content().Table(table => { table.ColumnsDefinition(columns => { columns.ConstantColumn(100); columns.RelativeColumn(); columns.ConstantColumn(80); });

table.Header(header => { header.Cell().Text("Nome"); header.Cell().Text("Descrição"); header.Cell().Text("Valor"); });

table.Cell().Text("Consultoria"); table.Cell().Text("Desenvolvimento de arquitetura"); table.Cell().Text

Recommendations