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 Também na biblioteca
Cache em Swift (iOS/macOS): Redis, NSCache e outras soluções
Aprendizado de Máquina em Go: visão geral de bibliotecas e frameworks (Golang)
Redis (ioredis) para JavaScript (Node.js): guia completo com exemplos
kotlinx-datetime para Kotlin: guia completo com exemplos práticos