Generación de informes PDF en C# (.NET) con QuestPDF
En el desarrollo moderno en la plataforma .NET, a menudo surge la necesidad de crear documentos PDF profesionales: informes, facturas, albaranes, resúmenes analíticos y otros documentos comerciales. La biblioteca QuestPDF es una solución moderna, de alto rendimiento e intuitiva para la generación de PDF en C#. No requiere la instalación de utilidades de terceros (por ejemplo, wkhtmltopdf) y funciona completamente en código administrado de .NET.
En este artículo, analizaremos en detalle cómo comenzar a trabajar con QuestPDF, configurar el proyecto, crear un informe simple con una tabla, imagen y formato de texto.
Instalación y configuración
QuestPDF se distribuye a través de NuGet. Para instalarlo, ejecute el comando en la Consola del Administrador de Paquetes o a través de la interfaz de Visual Studio/Rider:
Install-Package QuestPDFO a través de .NET CLI:
dotnet add package QuestPDFDespués de la instalación, es necesario inicializar la licencia una vez. Para uso comercial, se requiere una licencia de pago, pero para pruebas y proyectos pequeños, está disponible un modo gratuito con marca de agua. Para eliminar la marca de agua, agregue al inicio del programa:
QuestPDF.Settings.License = LicenseType.Community;// o para uso comercial:// QuestPDF.Settings.License = LicenseType.Professional;Creación del primer documento PDF
QuestPDF utiliza Fluent API: usted describe la estructura del documento con llamadas secuenciales a métodos. Veamos un ejemplo mínimo:
using QuestPDF.Fluent;using QuestPDF.Helpers;using QuestPDF.Infrastructure;
// Configuración de la licencia (obligatorio)QuestPDF.Settings.License = LicenseType.Community;
// Creamos el documentoDocument.Create(container =>{ container.Page(page => { page.Size(PageSizes.A4); page.Margin(2, Unit.Centimetre); page.DefaultTextStyle(x => x.FontSize(12));
page.Header() .Text("Informe de ventas") .SemiBold().FontSize(24).FontColor(Colors.Blue.Medium);
page.Content() .PaddingVertical(1, Unit.Centimetre) .Column(col => { col.Item().Text("Fecha: " + DateTime.Now.ToShortDateString()); col.Item().PaddingBottom(10).LineHorizontal(1); col.Item().Text("A continuación se presenta la tabla con los datos:"); });
page.Footer() .AlignCenter() .Text(x => { x.Span("Página "); x.CurrentPageNumber(); }); });}).GeneratePdf("report.pdf");Este código crea un archivo PDF con un título, fecha, línea horizontal y número de página en el pie de página.
Trabajo con tablas
Una de las tareas más comunes es mostrar datos tabulares. QuestPDF proporciona una API potente para crear tablas con ajuste automático del ancho de las columnas:
container.Page(page =>{ page.Size(PageSizes.A4); page.Margin(20);
page.Content().Table(table => { // Definimos las columnas (ancho en porcentaje del espacio disponible) table.ColumnsDefinition(columns => { columns.RelativeColumn(3); // Nombre columns.RelativeColumn(1); // Cantidad columns.RelativeColumn(1); // Precio columns.RelativeColumn(1); // Total });
// Encabezado de la tabla table.Header(header => { header.Cell().Background(Colors.Grey.Lighten2).Padding(5).Text("Producto"); header.Cell().Background(Colors.Grey.Lighten2).Padding(5).AlignCenter().Text("Cant."); header.Cell().Background(Colors.Grey.Lighten2).Padding(5).AlignCenter().Text("Precio"); header.Cell().Backgrou También en la biblioteca
Respect/Validation PHP: guía completa con ejemplos prácticos
Configuración de aplicaciones C# (.NET): bibliotecas y herramientas
Trabajo con XML en Kotlin: bibliotecas, análisis y creación de documentos
Newtonsoft.Json para C# (.NET): guía completa con ejemplos
Monitoreo de aplicaciones PHP: herramientas y prácticas para el desarrollador