Generación de PDF en C# (.NET): Guía completa de bibliotecas

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 PDF en C# (.NET): Resumen de las mejores bibliotecas



La generación de documentos PDF es una de las tareas más comunes en aplicaciones empresariales y web en C#. Informes, facturas, albaranes, certificados: todo esto se puede generar cómodamente en formato PDF. En el ecosistema .NET existen varias bibliotecas potentes, tanto de pago como gratuitas. En este artículo analizaremos las herramientas más populares, sus capacidades y proporcionaremos ejemplos de código.



Bibliotecas populares para trabajar con PDF en .NET



  • iTextSharp / iText 7 — una de las bibliotecas más antiguas y completas. Versión de pago (iText 7) para uso comercial, pero existe una versión heredada iTextSharp bajo LGPL.
  • PdfSharp / MigraDoc — biblioteca gratuita de código abierto. Ideal para documentos e informes sencillos.
  • QuestPDF — biblioteca moderna con API fluida. Gratuita para uso comercial (licencia MIT). Permite crear documentos complejos con un código mínimo.
  • IronPDF — biblioteca de pago, pero con funcionalidades muy potentes: conversión de HTML a PDF, trabajo con formularios, protección con contraseña.
  • SelectPdf — otra herramienta de pago con soporte para HTML a PDF y múltiples configuraciones.


Instalación de bibliotecas a través de NuGet



Todas las bibliotecas se instalan de forma estándar a través del administrador de paquetes NuGet. Ejemplos de instalación:



// Para PdfSharpInstall-Package PdfSharp

// Para QuestPDFInstall-Package QuestPDF

// Para iTextSharp (legacy)Install-Package iTextSharp.LGPLv2.Core


Ejemplo 1: Creación de PDF con PdfSharp



PdfSharp es una excelente opción para tareas sencillas. A continuación, un ejemplo de creación de un documento con texto y tabla:



using PdfSharp.Pdf;using PdfSharp.Drawing;

class Program{ static void Main() { // Creamos un nuevo documento PDF PdfDocument document = new PdfDocument(); PdfPage page = document.AddPage(); XGraphics gfx = XGraphics.FromPdfPage(page);

// Dibujamos texto XFont font = new XFont("Arial", 14); gfx.DrawString("¡Hola, mundo PDF!", font, XBrushes.Black, new XRect(10, 10, page.Width, page.Height), XStringFormats.TopLeft);

// Guardamos el documento document.Save("HelloWorld.pdf"); Console.WriteLine("¡PDF creado!"); }}


Ejemplo 2: Generación de informe con QuestPDF



QuestPDF ofrece una elegante API fluida. Crearemos una factura simple:



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

class Program{ static void Main() { 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("Página {0} de {1}", x => x.CurrentPageNumber(), x => x.TotalPages()); }); }).GeneratePdf("Invoice.pdf");

Console.WriteLine("¡Factura creada!"); }

static void ComposeHeader(IContainer container) { container.Row(row => { row.RelativeItem().Column(column => { column.Item().Text("FACTURA").Bold().FontSize(20); column.Item().Text($"Fecha: {DateTime.Now:dd.MM.yyyy}"); }); row.ConstantItem(100).Image(Placeholders.Image(100, 100)); }); }

static void ComposeContent(IContainer container) { container.Table(table => { // Encabezados de la tabla table.ColumnsDefinition(columns =>

Recommendations