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

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 completa de bibliotecas e ferramentas



Criar documentos PDF é uma das tarefas mais comuns no desenvolvimento corporativo. Relatórios, faturas, notas fiscais, contratos — tudo isso exige uma ferramenta confiável para geração. No ecossistema C# (.NET), existem várias bibliotecas poderosas, cada uma com suas características. Neste artigo, analisaremos as opções mais populares, seus prós e contras, e forneceremos exemplos de código.



1. iTextSharp / iText 7 para .NET



iText é o padrão de facto no mundo da geração de PDF. A biblioteca existe desde o ano 2000 e é ativamente desenvolvida. Para .NET, está disponível a versão iText 7 (pacote NuGet itext7).



Recursos:

  • Controle total sobre o conteúdo: texto, tabelas, imagens, anotações.
  • Trabalho com formulários (AcroForms), assinaturas digitais, criptografia.
  • Suporte a PDF/A (armazenamento de arquivo).
  • Alta performance.


Desvantagens:

  • API complexa (trabalho de baixo nível com coordenadas).
  • Para uso comercial, é necessária uma licença paga (AGPL para open-source).


Exemplo de criação de PDF simples:

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

public void CreatePdf(string filePath){ using (var writer = new PdfWriter(filePath)) using (var pdf = new PdfDocument(writer)) using (var document = new Document(pdf)) { document.Add(new Paragraph("Olá, mundo!")); document.Add(new Paragraph("Este é um PDF criado com iText 7.")); }}


2. PDFsharp



PDFsharp é uma biblioteca open-source leve para .NET (também existe uma versão para GDI+). É ideal para tarefas simples: criação de documentos com texto, tabelas, imagens.



Recursos:

  • API simples e intuitiva.
  • Suporte a fontes (incluindo cirílico).
  • Trabalho com primitivas gráficas (linhas, formas).
  • Gratuita (licença MIT).


Desvantagens:

  • Suporte limitado para elementos complexos (formulários, marcadores).
  • Mais lento que o iText em grandes volumes.


Exemplo:

using PdfSharp.Pdf;using PdfSharp.Drawing;

public void CreatePdf(string filePath){ using (var document = new PdfDocument()) { var page = document.AddPage(); using (var gfx = XGraphics.FromPdfPage(page)) { var font = new XFont("Arial", 20, XFontStyle.Regular); gfx.DrawString("Olá, mundo!", font, XBrushes.Black, new XPoint(40, 100)); } document.Save(filePath); }}


3. QuestPDF



QuestPDF é uma biblioteca moderna com fluent API, inspirada no conceito "layout-first". Permite descrever a estrutura do documento de forma declarativa, o que simplifica muito a criação de layouts complexos.



Recursos:

  • Estilo declarativo (como WPF ou HTML).
  • Quebra de página automática (paginação).
  • Suporte a tabelas, cabeçalhos, rodapés.
  • Versão gratuita com limitação (até 10 páginas).


Desvantagens:

  • Versão gratuita limitada.
  • Menos flexibilidade que o iText (difícil desenhar gráficos arbitrários).


Exemplo:

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

public void CreatePdf(string filePath){ Document.Create(container => { container.Page(page => { page.Size(PageSizes.A4); page.Margin(30); page.Content().Column(col => { col.Item().Text("Olá, mundo!").FontSize(20); col.Item().Text("Este é o QuestPDF.").FontSize(14); }); });

Recommendations