Generación de PDF en C# (.NET): revisión de bibliotecas y ejemplos prácticos
La generación de documentos PDF es una de las tareas más comunes en el desarrollo corporativo con C#. Informes, facturas, albaranes, contratos: todo esto se puede generar programáticamente. En el ecosistema .NET existen varias bibliotecas maduras, cada una con sus propias fortalezas. En este artículo analizaremos cuatro herramientas principales, mostraremos ejemplos de código y ayudaremos a elegir la adecuada para tu proyecto.
1. iTextSharp / iText 7 for .NET
iText es probablemente la biblioteca más conocida para trabajar con PDF. La versión iTextSharp fue un puerto de la biblioteca Java para .NET Framework. Actualmente, la versión vigente es iText 7 for .NET (licencia AGPL para proyectos de código abierto o comercial).
Capacidades:
- Creación de PDF desde cero
- Trabajo con plantillas (PdfTemplate)
- Adición de imágenes, tablas, listas
- Soporte para Unicode, cirílico
- Firma digital, cifrado
Ejemplo: documento simple con tabla
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("¡Hola, mundo!")); Table table = new Table(3); table.AddCell("Nombre"); table.AddCell("Edad"); table.AddCell("Ciudad"); table.AddCell("Ana"); table.AddCell("28"); table.AddCell("Madrid"); doc.Add(table); }}2. PDFsharp / MigraDoc
PDFsharp es una biblioteca ligera de código abierto (MIT). Junto con MigraDoc permite describir documentos al estilo de un "procesador de textos": párrafos, estilos, encabezados y pies de página. Es ideal para generar informes simples sin gráficos complejos.
Ventajas:
- Baja barrera de entrada
- Buen soporte para cirílico
- No requiere licencia
- Funciona con .NET Framework y .NET Core
Ejemplo: creación de documento con 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 del informe"); para.Format.Font.Size = 18; para.Format.Font.Bold = true; section.AddParagraph("Este es el texto del informe. Generado con PDFsharp y MigraDoc."); PdfDocumentRenderer renderer = new PdfDocumentRenderer(true); renderer.Document = doc; renderer.RenderDocument(); renderer.PdfDocument.Save(filePath);}3. QuestPDF
QuestPDF es una biblioteca moderna con interfaz fluida (sintaxis similar a LINQ). Se distribuye bajo licencia MIT (gratuita para uso comercial). Está en desarrollo activo y es compatible con .NET 6/7/8.
Características clave:
- Construcción declarativa del diseño
- Soporte para imágenes, SVG, códigos QR
- Alto rendimiento
Ejemplo: generación de factura
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 => {
También en la biblioteca
Procesamiento de JSON en Swift: Codable, Foundation y SwiftyJSON para iOS/macOS
Parseo de HTML en Rust: bibliotecas y ejemplos prácticos
Tracing para Rust: guía completa con ejemplos
Trabajo con CSV en JavaScript (Node.js): bibliotecas, análisis y generación de datos
Pruebas en JavaScript (Node.js): frameworks y herramientas
Recommendations