La generación de informes es esencial para aplicaciones empresariales como comercio electrónico, envíos, tecnología financiera, entre otros.
Uno de los formatos de documento más populares para fines de informes es el PDF.
PDF significa Portable Document Format. Es un formato de archivo para presentar documentos (incluyendo formato de texto e imágenes) de manera independiente del software de aplicación, hardware y sistemas operativos.
Algunos problemas comunes que enfrentarán los desarrolladores de .NET al trabajar con archivos PDF incluyen:
- Creación de documentos PDF dinámicos.
- Diseñar un diseño de página consistente.
- Personalización de fuentes en documentos impresos.
Hoy quiero mostrarte algunas formas interesantes de generar archivos PDF en .NET.
Crear archivos PDF con QuestPDF
QuestPDF es una biblioteca de código abierto para .NET que se utiliza para generar documentos PDF. Expone una API fluida que puedes usar para componer muchos elementos simples y así crear documentos complejos. A diferencia de otras bibliotecas, no se basa en la conversión de HTML a PDF.
Vamos a instalar el paquete NuGet de QuestPDF:
Aquí tienes cómo puedes generar una factura simplificada con QuestPDF:
Lo que me gusta de QuestPDF:
API fluida
Fácil de usar
Buena documentación
Lo que no me gusta de QuestPDF:
Necesidad de escribir mucho código para crear documentos
Alcance limitado de funciones
Falta de soporte para conversión de HTML a PDF
Conversión de HTML a PDF con IronPDF
El enfoque más común para generar archivos PDF es utilizando una plantilla HTML.
Mi biblioteca favorita que admite esto es IronPDF.
IronPDF es una biblioteca de PDF en C# que permite la manipulación rápida y eficiente de archivos PDF. También tiene muchas características valiosas, como la exportación al formato PDF/A y la firma digital de documentos PDF.
Pero, ¿Cuál es la idea detrás de utilizar una plantilla HTML?
En primer lugar, tienes más control sobre el formato del documento. Puedes utilizar CSS para dar estilo al marcado HTML, y estos estilos se aplicarán al exportar a un documento PDF.
Un enfoque de implementación interesante es el uso de vistas ASP.NET Core MVC y la sintaxis Razor. Puedes pasar un objeto a la vista en tiempo de ejecución para representar contenido HTML dinámico.
He utilizado este enfoque con vistas MVC en algunos proyectos con excelentes resultados.
Comencemos instalando el paquete NuGet de IronPDF:
Estoy utilizando una vista Razor fuertemente tipada para definir mi marcado. La clase InvoiceViewModel es el modelo y se utiliza para crear contenido dinámico
Ahora, necesitas utilizar el ChromePdfRenderer de IronPDF para convertir el HTML a un documento PDF.
Fusionar varios archivos PDF
Otro requisito común que he visto es fusionar varios archivos PDF. Por ejemplo, podrías implementar una función para fusionar los recibos mensuales para el departamento de contabilidad.
Puedes utilizar el método PdfDocument.Merge para implementar esto. Este método acepta una colección de objetos PdfDocument como argumento. Primero deberás cargar los documentos PDF en la memoria antes de fusionarlos.
Aquí tienes un ejemplo:
Exportar archivos PDF desde una API
Es bastante sencillo devolver un archivo PDF desde un punto final de API en ASP.NET Core.
Las API mínimas cuentan con el método Results.File que acepta un camino de archivo, un flujo de datos o una matriz de bytes. También debes especificar el tipo de contenido y, opcionalmente, un nombre de archivo. El tipo MIME para archivos PDF es application/pdf.
Así es como puedes devolver un archivo PDF desde una matriz de bytes:
Vaxi antes que nada gracias por este articulo, pero sobre todo tu aporte a la comunidad. Tengo una consulta la licencia de ironpdf es Opensource?.