Generación de informes PDF en C# (.NET): iTextSharp, QuestPDF, PDFsharp

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Generación de informes PDF en C# (.NET): resumen de las mejores bibliotecas



La creación de informes PDF es una de las tareas más comunes en aplicaciones empresariales con C# (.NET). Ya sea para exportar datos para un cliente, generar una factura o un panel analítico complejo, necesitarás una herramienta confiable. En este artículo, analizaremos tres bibliotecas principales: iTextSharp (y su sucesor iText 7), QuestPDF y PDFsharp. Aprenderás cuál elegir para cada tarea específica y verás ejemplos de código funcionales.



1. iTextSharp / iText 7 — clásico y potente



iTextSharp es un puerto de la popular biblioteca Java iText para .NET. La versión iText 7 (paquete NuGet itext7) está completamente reescrita y admite una API moderna. La biblioteca permite crear PDF desde cero, editar existentes, agregar marcas de agua, formularios, marcadores y metadatos.



Características principales:

  • Control total sobre la estructura del documento (párrafos, tablas, imágenes, listas).
  • Soporte de fuentes, incluidas las cirílicas (TrueType).
  • Trabajo con formularios (AcroForms) y firmas digitales.
  • Licencia: AGPL (el uso comercial requiere la compra de una licencia).


Ejemplo: creación de un informe simple con tabla

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("Informe de ventas") .SetFontSize(20).SetBold());

Table table = new Table(3); table.AddCell("Producto"); table.AddCell("Cantidad"); table.AddCell("Precio");

table.AddCell("Portátil"); table.AddCell("10"); table.AddCell("75000");

table.AddCell("Ratón"); table.AddCell("50"); table.AddCell("1500");

document.Add(table); }}


2. QuestPDF — API moderno y conciso



QuestPDF es una biblioteca relativamente joven (desde 2021) que está ganando popularidad rápidamente. Su principal característica es una API fluida (Fluent API), similar a trabajar con HTML/CSS. El código resulta legible y compacto. QuestPDF es completamente gratuito para uso comercial (licencia MIT).



Características:

  • Descripción declarativa del diseño: contenedores, columnas, filas.
  • Soporte integrado para estilos, colores, bordes y fondos.
  • Salto de línea automático y ajuste de tablas.
  • Exportación a PDF y XPS.


Ejemplo: creación de un informe con 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("Factura 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("Nombre"); header.Cell().Text("Descripción"); header.Cell().Text("Importe"); });

table.Cell().Text("Consultoría"); table.Cell().Text("Desarrollo de arquitectura"); table.Cell().Text

Recommendations