Generación de PDF en C# (.NET): Resumen de bibliotecas y herramientas

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 completo de bibliotecas y herramientas



La creación de documentos PDF es una de las tareas más comunes en el desarrollo corporativo. Informes, facturas, albaranes, contratos: todo esto requiere una herramienta confiable para la generación. En el ecosistema de C# (.NET) existen varias bibliotecas potentes, cada una con sus propias características. En este artículo, analizaremos las opciones más populares, sus ventajas y desventajas, y proporcionaremos ejemplos de código.



1. iTextSharp / iText 7 para .NET



iText es el estándar de facto en el mundo de la generación de PDF. La biblioteca existe desde el año 2000 y se desarrolla activamente. Para .NET está disponible la versión iText 7 (paquete NuGet itext7).



Funcionalidades:

  • Control total sobre el contenido: texto, tablas, imágenes, anotaciones.
  • Trabajo con formularios (AcroForms), firmas digitales, cifrado.
  • Soporte para PDF/A (almacenamiento de archivos).
  • Alto rendimiento.


Desventajas:

  • API compleja (trabajo de bajo nivel con coordenadas).
  • Para uso comercial se requiere una licencia paga (AGPL para código abierto).


Ejemplo de creación de un PDF simple:

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("¡Hola, mundo!")); document.Add(new Paragraph("Este es un PDF creado con iText 7.")); }}


2. PDFsharp



PDFsharp es una biblioteca ligera de código abierto para .NET (también hay una versión para GDI+). Es ideal para tareas simples: creación de documentos con texto, tablas, imágenes.



Funcionalidades:

  • API simple e intuitiva.
  • Soporte de fuentes (incluyendo cirílico).
  • Trabajo con primitivas gráficas (líneas, formas).
  • Gratuita (licencia MIT).


Desventajas:

  • Soporte limitado para elementos complejos (formularios, marcadores).
  • Más lento que iText en grandes volúmenes.


Ejemplo:

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("¡Hola, mundo!", font, XBrushes.Black, new XPoint(40, 100)); } document.Save(filePath); }}


3. QuestPDF



QuestPDF es una biblioteca moderna con una API fluida, inspirada en el concepto de "layout-first". Permite describir la estructura del documento de forma declarativa, lo que simplifica enormemente la creación de diseños complejos.



Funcionalidades:

  • Estilo declarativo (como WPF o HTML).
  • División automática en páginas (paginación).
  • Soporte para tablas, encabezados, pies de página.
  • Versión gratuita con limitación (hasta 10 páginas).


Desventajas:

  • La versión gratuita es limitada.
  • Menos flexibilidad que iText (difícil dibujar gráficos arbitrarios).


Ejemplo:

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("¡Hola, mundo!").FontSize(20); col.Item().Text("Esto es QuestPDF.").FontSize(14); }); });

Recommendations