Generación de informes PDF en C# (.NET) con QuestPDF

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) 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 QuestPDF


O a través de .NET CLI:



dotnet add package QuestPDF


Despué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

Recommendations