Introduction: The Why, What, and How in Modern .NET Applications En el mundo digital de hoy, la transformación Ya sea generando facturas, informes dinámicos, billetes electrónicos o archivos PDF descargables, los desarrolladores que trabajan con .NET Core y la plataforma unificada de .NET necesitan herramientas de conversión de archivos PDF fiables para convertir contenido HTML —incluidas cadenas HTML, archivos HTML y páginas HTML— en documentos PDF de alta calidad dentro de varias aplicaciones de .NET Core. HTML en PDF El término “.NET Core” ha evolucionado con las versiones unificadas de la plataforma .NET de Microsoft, versiones 5, 6, 7 y más allá. Core y Entity Framework Core, pero este artículo se centra en herramientas compatibles con la plataforma .NET Core moderna y los entornos de la plataforma .NET Framework. por ASP.NET Hoy, examinaremos tres bibliotecas PDF diferentes que cubren diferentes enfoques para la conversión de HTML a PDF: , de , y . Irónicos Página PDF PuppeteerSharp ¿Por qué convertir HTML a PDF? Muchas aplicaciones requieren convertir páginas web o documentos HTML generados dinámicamente en archivos PDF para imprimir, compartir o archivar.Desde la generación de facturas y declaraciones en PDF hasta la renderización de documentos PDF existentes o la creación de informes de contenido HTML, un buen convertidor de HTML a PDF es esencial para soluciones escalables. Contextualizar la necesidad de la conversión de PDF en las aplicaciones .NET Core Las aplicaciones web ASP.NET Core a menudo requieren la conversión de archivos PDF del lado del servidor para producir facturas, informes o documentos descargables a partir de cadenas HTML o archivos HTML. Entity Framework Core facilita la captura de datos optimizada de bases de datos para renderizar contenido HTML limpio para la generación de PDF, permitiendo que los conjuntos de datos complejos se presenten en documentos PDF formatados. .NET MAUI permite a las aplicaciones multiplataforma del lado del cliente (Android, iOS, Windows, macOS) generar archivos PDF directamente, ideal para el uso fuera de línea o cuando se requiere la salida de PDF sin interacción con el servidor. Convertir páginas HTML en formato PDF implica muchos retos: renderizar correctamente los estilos CSS, ejecutar JavaScript, manejar fuentes web, paginar y soportar documentos HTML muy grandes. Elegir la derecha El componente de convertidor de PDF para su plataforma .NET Core o aplicaciones .NET Core depende de factores como el rendimiento, la fidelidad y el entorno de implementación. Conversión PDF Biblioteca Comprender los enfoques de conversión y su adaptación dentro de los marcos Hay tres enfoques principales para convertir HTML a PDF en las plataformas modernas .NET Core, cada uno con sus propios puntos fuertes, debilidades y casos de uso ideales. Conversión basada en el navegador usando Chrome/Chromium sin cabeza (por ejemplo, PuppeteerSharp, Playwright) **How it Works: \ These tools leverage a real browser engine (Chromium) running in “headless” mode—meaning without a visible UI—to render HTML pages exactly as a user’s browser would, including full CSS and JavaScript support. This ensures pixel-perfect fidelity when generating PDF files from HTML content or web pages, so you can be confident that your PDF generated successfully . Fit with Frameworks: ASP.NET Core: Ideal para la generación de PDF en el lado del servidor donde la fidelidad de rendimiento es alta. Adecuado para trabajos de fondo o servicios de larga duración que generan informes o facturas. Requiere una gestión cuidadosa de las instancias del navegador para evitar el agotamiento de los recursos. .NET MAUI: menos comúnmente utilizado en el lado del cliente debido a las demandas de recursos, pero factible si una aplicación MAUI llama a un servicio ASP.NET Core de backend para realizar la conversión. por ASP.NET por ASP.NET Ideal for: Las aplicaciones ASP.NET Core requieren la generación de páginas PDF complejas con elementos interactivos en el lado del servidor. Servicios de backend que muestran cadenas HTML o archivos HTML temporales antes de convertirlos a PDF. Considerations: Requiere el despliegue de grandes binarios de Chromium (dependencia externa). Puede ser intensivo en recursos (CPU, memoria). Necesita patrones de programación asimétricos para evitar bloquear las solicitudes HTTP. Pros: Soporte completo de JS y CSS Alta precisión de rendimiento Soporte para páginas HTML complejas e interactivas Cons: Intensidad de recursos (CPU y memoria) La dependencia de cromo externa complica la implementación (especialmente en contenedores) Tiempos de conversión PDF potencialmente más largos Librerías dedicadas de generación de PDF (Librerías nativas de C# como IronPDF, SelectPdf, Aspose.PDF, iText7) **How it Works: \ These .NET libraries come with built-in HTML rendering engines and APIs that convert HTML files, HTML strings, or URLs directly to PDF documents without external browser dependencies. Fit with Frameworks: ASP.NET Core: Se puede integrar directamente en aplicaciones web para una generación de PDF sencilla y eficiente. .NET MAUI: Estas bibliotecas se pueden combinar con su aplicación MAUI, permitiendo la creación de PDF en el lado del cliente sin procesos externos. por ASP.NET Pros: Más rápido que las soluciones basadas en navegadores No existen dependencias de navegadores externos Soporte para funciones avanzadas: Agregar firmas digitales a sus PDFs, fusionar/split documentos PDF, watermarks, bookmarks y manipular documentos PDF. Commercial libraries often include support and regular updates Cons: El rendimiento de la fidelidad varía y puede no manejar perfectamente los CSS /JS complejos Gastos de licencia para bibliotecas comerciales Wrappers de herramientas de línea de comandos (por ejemplo, DinkToPdf Wrapping wkhtmltopdf) **How it Works: \ Wrappers around powerful command-line tools like wkhtmltopdf convert HTML files or HTML strings to PDF using a headless WebKit rendering engine. Fit with Frameworks: ASP.NET Core: Solución gratuita popular para la generación de PDF en el lado del servidor; requiere unir y implementar binarios nativos. .NET MAUI: Más adecuado para aplicaciones de escritorio donde la distribución binaria es más fácil; menos común en plataformas móviles. por ASP.NET Pros: Libre y ampliamente aceptado Buen soporte para HTML estándar, características de estilos CSS Soporta los encabezados, los pies y el número de página Cons: La dependencia externa de binarios nativos complica la implementación Puede luchar con páginas modernas de CSS3 o JavaScript pesadas El rendimiento puede ser inconsistente con los últimos estándares web Tabla comparativa de la biblioteca Library Rendering Engine Platforms HTML/CSS/JS Support License Ideal Use Cases PuppeteerSharp Headless Chromium Windows/Linux Full JS/CSS Open Source High-fidelity server-side PDF generation IronPDF Custom Renderer Windows/macOS Good JS/CSS Commercial Server and client-side PDF converter component DinkToPdf WebKit (wkhtmltopdf) Windows/Linux Good CSS, limited JS Open Source Lightweight PDF converter API on servers PuppeteerSharp Chromium sin cabeza Windows y Linux Completamente JS/CSS fuente abierta Alta fidelidad de la generación de PDF del lado del servidor IronPDF Condiciones de rendimiento Windows y macOS Buen trabajo JS/CSS comerciales Conversor de servidor y cliente PDF componente DinkToPdf WebKit (wkhtmltopdf en inglés) Windows y Linux Excelente CSS, JS limitado fuente abierta Lightweight PDF Converter API en servidores Deep Dive: Comparaciones de bibliotecas y implementaciones específicas del marco Ejemplo 1: PuppeteerSharp (Baseado en navegador) es un puerto .NET de la biblioteca Node.js Puppeteer, proporcionando automatización de Chrome sin cabeza para renderizar contenido HTML. Se aprovecha el poder del motor Chromium para generar archivos PDF con fidelidad visual casi perfecta, soportando estilos CSS completos, ejecución de JavaScript y fuentes web modernas. Esto lo hace ideal para escenarios donde su contenido HTML imita páginas web o documentos del mundo real, como facturas, dashboards o informes. PuppeteerSharp Key Features for PDF Generation: HTML a PDF de alta fidelidad con Chromium Soporte completo para @media print, ejecución de JavaScript, margen de página, encabezados/footers Control sobre el diseño de la página, el tamaño del papel y más a través de PdfOptions La salida puede ser transmitida como flujos de byte de documento PDF generados o escrita directamente en el disco ASP.NET Core Integration: PuppeteerSharp se integra sin problemas en Aplicaciones básicas para la generación de PDF en el lado del servidor. Es adecuado para tareas de fondo o servicios de larga duración donde la fidelidad de la renderización de PDF es crucial. Puede desencadenarlo desde una acción de controlador o una cola de trabajadores en el fondo, dependiendo de sus necesidades de rendimiento y carga. por ASP.NET Code Snippet: Convert HTML string to PDF in Core ASP.NET por ASP.NET using Microsoft.AspNetCore.Mvc; using PuppeteerSharp; using PuppeteerSharp.Media; using System.Threading.Tasks; namespace PuppeteerSharpExample.Controllers { [ApiController] [Route("api/[controller]")] public class PdfController : Controller { [HttpPost("convert")] public async Task<IActionResult> ConvertHtmlToPdf([FromBody] string htmlContent) { // Download Chromium if not already downloaded var browserFetcher = new BrowserFetcher(); // Launch headless browser var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true }); // Create a new page var page = await browser.NewPageAsync(); // Set HTML content await page.SetContentAsync(htmlContent); // Generate PDF stream with options var pdfStream = await page.PdfStreamAsync(new PdfOptions { Format = PaperFormat.A4, MarginOptions = new MarginOptions { Top = "20px", Bottom = "20px" } }); // Close browser await browser.CloseAsync(); // Return PDF file as downloadable response return File(pdfStream, "application/pdf", "document.pdf"); } } } Output Integración del núcleo del marco de entidades (conceptual): Si bien PuppeteerSharp no interactúa directamente con las fuentes de datos, funciona perfectamente junto a Entity Framework Core en un flujo de trabajo PDF típico del lado del servidor. Retrieve data from your database using EF Core (e.g., orders, reports, invoices). Render los datos en una cadena HTML usando Razor Views o interpolación de cuadros. Pasar la cadena HTML a PuppeteerSharp para convertirla en un archivo PDF. Example Flow: // 1. Fetch data from EF Core var invoice = await _dbContext.Invoices .Include(i => i.Items) .FirstOrDefaultAsync(i => i.Id == invoiceId); // 2. Render Razor view to HTML (e.g., using a ViewRenderService) string htmlContent = await _viewRenderService.RenderToStringAsync("InvoiceView", invoice); // 3. Convert to PDF using PuppeteerSharp await page.SetContentAsync(htmlContent); var pdfStream = await page.PdfStreamAsync(...); This is a common and scalable pattern in Core applications for generating dynamic reports or PDF documents from database-backed content. por ASP.NET Integración .NET MAUI (Conceptual): PuppeteerSharp no es práctico para el uso directo dentro de una aplicación .NET MAUI (especialmente en Android o iOS) porque requiere: Un navegador binario Chromium completo Recursos de memoria y CPU Capacidades de ejecución nativa no fácilmente portables a plataformas móviles Use a backend API de núcleo que maneja la conversión de HTML a PDF usando PuppeteerSharp, y tiene que su aplicación .NET MAUI enviar el HTML y recibir el PDF a través de HTTP. Best Practice for MAUI: por ASP.NET Conceptual Flow: El usuario MAUI crea o visualiza datos. La aplicación envía HTML (o parámetros de plantilla) a un punto final de la API ASP.NET Core. La API ejecuta PuppeteerSharp y devuelve un archivo PDF. La aplicación MAUI almacena, prevé o comparte el archivo en el dispositivo. MAUI Sample Code (Calling Backend API): var html = "<html><body><h1>Report</h1></body></html>"; var http = new HttpClient(); var response = await http.PostAsync("https://yourdomain.com/api/pdf/convert", new StringContent(JsonSerializer.Serialize(html), Encoding.UTF8, "application/json")); var pdfBytes = await response.Content.ReadAsByteArrayAsync(); var filePath = Path.Combine(FileSystem.AppDataDirectory, "report.pdf"); File.WriteAllBytes(filePath, pdfBytes); This architecture gives you high-fidelity PDFs in a mobile-friendly, resource-efficient way. Ejemplo 2: IronPDF (Biblioteca comercial dedicada) **Overview: \ es una poderosa biblioteca comercial de PDF que es perfecta para tareas de conversión de .NET Core HTML a PDF. Su capacidad de convertir contenido HTML a PDF en solo unas pocas líneas de código C#, sin depender de navegadores externos o herramientas de línea de comandos. Ya sea que esté pasando una sencilla cadena HTML, o una página web pesada en CSS, IronPDF puede manejar cualquier tarea de conversión. Irónicos Dispone de su propio motor de renderizado, soporta HTML5/CSS3/JS avanzado, e integra estrechamente con las aplicaciones ASP.NET Core y .NET MAUI, incluso sin acceso a Internet o dependencias de navegador. Tu PDF coincidirá perfectamente con el contenido original. Pixel-perfecto rendimiento Key Features: Convertir cadenas HTML, Razor Views, URLs o archivos en PDF Soporte completo de CSS y JavaScript Is capable of using HTML tags (<h1>, <h2>, etc.) to automatically generated bookmarks in your PDF files Soporte para manipular documentos PDF, extraer texto / imágenes de PDF, fusionar / dividir PDFs y agregar marcadores Integración ASP.NET Core IronPDF ofrece una estrecha integración con Proyectos de núcleo, lo que facilita la conversión de contenido HTML generado dinámicamente, especialmente las vistas de Razor con datos de EF Core, en documentos PDF limpios y imprimibles. ASP.NET IronPDF funciona totalmente como una biblioteca .NET autónoma, simplificando la implementación a entornos en la nube como Azure App Services. Code Snippet: Convert a Razor View with EF Core data to PDF using Microsoft.AspNetCore.Mvc; using IronPdf; namespace IronPdfExample.Controllers { [ApiController] [Route("api/[controller]")] public class IronPdfController : Controller { [HttpPost("convert")] public IActionResult ConvertHtmlToPdf([FromBody] string htmlContent) { License.LicenseKey = "LICENSE-KEY" //Enter your License key here var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(htmlContent); return File(pdf.BinaryData, "application/pdf", "ironpdf.pdf"); } } } Output Este enfoque le proporciona un flujo de trabajo limpio y del lado del servidor para generar documentos PDF dinámicos a partir de vistas basadas en bases de datos. .NET MAUI Integration IronPDF se puede empacar directamente en una aplicación .NET MAUI, permitiendo la generación de PDF completo en el lado del cliente en plataformas móviles o de escritorio, sin dependencia de Internet. Code Snippet: Generate PDF from HTML on Button Click (MAUI) using IronPdf; using System; using System.IO; using Microsoft.Maui.Controls; namespace MauiApp2 { public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); } private async void OnGeneratePdfClicked(object sender, EventArgs e) { try { StatusLabel.Text = "Generating PDF..."; await Task.Run(() => { string htmlContent = "<html><body><h1>Hello from MAUI + IronPDF!</h1></body></html>"; var renderer = new ChromePdfRenderer(); var pdfDoc = renderer.RenderHtmlAsPdf(htmlContent); string path = Path.Combine(FileSystem.AppDataDirectory, "GeneratedDocument.pdf"); File.WriteAllBytes(path, pdfDoc.BinaryData); // Update UI after work completes MainThread.BeginInvokeOnMainThread(() => { StatusLabel.Text = $"PDF saved to {path}"; }); }); } catch (Exception ex) { StatusLabel.Text = $"Error: {ex.Message}"; } } } } UI Output Output PDF file Esta configuración es excelente para las aplicaciones móviles que pueden funcionar fuera de línea, donde los usuarios generan informes, recibos o boletos en movimiento, sin tener que golpear un servidor de backend. Example 3: DinkToPdf (wkhtmltopdf Wrapper) **Overview: \ es un engranaje .NET de código abierto gratuito para la popular herramienta de línea de comandos wkhtmltopdf. Permite convertir HTML a PDF ejecutando el binario wkhtmltopdf directamente desde dentro de una aplicación .NET Core. Soporta HTML moderno, CSS y JavaScript bastante bien, y es una elección común para los desarrolladores que buscan una solución sin coste para la generación de PDF del lado del servidor. DinkToPdf Key Features: Uses WebKit rendering engine for good visual fidelity Soporta los encabezados, los pies, los números de la página y los márgenes Compatible con archivos HTML, URLs o cadenas Funciona bien con servidores Linux y Windows cuando se configuran correctamente Integración ASP.NET Core Para usar DinkToPdf en El núcleo: ASP.NET Instalar el paquete NuGet: dotnet add package DinkToPdf for your OS (Windows, Linux, etc.) in your project or deployment folder. Download and include the appropriate wkhtmltopdf binary Regístrate DinkToPdf como un servicio singleton (opcional pero útil). Code Snippet: Convert HTML string to PDF in Core ASP.NET por ASP.NET using Microsoft.AspNetCore.Mvc; using DinkToPdf; using DinkToPdf.Contracts; using System; namespace DinkToPdfExample.Controllers { [ApiController] [Route("api/[controller]")] public class DinkToPdfController : Controller { private readonly IConverter _converter; public DinkToPdfController(IConverter converter) { _converter = converter; } [HttpPost("convert")] public IActionResult ConvertHtmlToPdf([FromBody] string html) { var doc = new HtmlToPdfDocument() { GlobalSettings = { PaperSize = PaperKind.A4 }, Objects = { new ObjectSettings { HtmlContent = html, WebSettings = { DefaultEncoding = "utf-8" } } } }; var pdf = _converter.Convert(doc); return File(pdf, "application/pdf", "dinktopdf.pdf"); } } } Output Este ejemplo muestra cómo integrarlo en un punto final de controlador simple. También puede renderizar las vistas de Razor a cuerdas HTML usando un servicio de renderización de vista personalizado antes de transmitir el resultado a HtmlContent. Consideraciones de despliegue DinkToPdf depende del binario nativo wkhtmltopdf, por lo que la implementación puede ser complicada. Windows: Paquete la arquitectura correcta (32-bit o 64-bit) binario con su aplicación. no se olvide de establecer su camino explícitamente en la producción. Linux: Instale las bibliotecas necesarias como libX11, libjpeg y otras. Servicios de aplicaciones de Azure: No se admite oficialmente a menos que utilice una implementación autónoma o una configuración contenerizada con el binario incluido. Cross-platform: Asegúrese de probar el rendimiento wkhtmltopdf en todos los sistemas operativos de destino - la fidelidad del rendimiento puede diferir. Para evitar las sorpresas transversales, si se implementa en Linux y necesita un comportamiento de rendimiento consistente. consider Docker Desafíos específicos del marco y soluciones avanzadas para HTML a PDF .NET Core ASP.NET Core Challenges **Rendering Razor Views to HTML Strings: \ Since PDF converters require raw HTML, use a Esto permite convertir el contenido dinámico, a menudo obtenido a través de EF Core, en HTML listo para la generación de PDF, manteniendo la lógica de la interfaz separada de los flujos de trabajo de PDF. ViewRenderService **Deployment of External Binaries: \ Tools like PuppeteerSharp (Chromium) and DinkToPdf (wkhtmltopdf) depend on native binaries. Deploy these reliably using Docker containers, Azure App Services with startup scripts, or self-contained .NET deployments to ensure consistent PDF generation across platforms. **Async Performance: \ PDF generation can be resource-heavy and block web threads. Offload conversion to background workers or queues (e.g., RabbitMQ, Azure Queue Storage) for asynchronous processing, keeping Core apps responsive during HTML to PDF operations. por ASP.NET **Security: \ Always sanitize user-generated HTML to prevent injection attacks. Remove unsafe tags and scripts before PDF conversion to safeguard your app and PDF documents. **Scaling: \ For high-traffic scenarios, employ load balancing and horizontal scaling. Distributed caching and container orchestration ensure smooth PDF output under heavy loads. Consideraciones básicas del marco de la entidad **Optimize Data Retrieval: \ Use .Select(), .Include(), and .AsNoTracking() to efficiently fetch only necessary data, reducing memory usage and speeding HTML content generation. **Flatten Hierarchical Data: \ Transform nested data into clean HTML tables or lists. Leverage Razor Partial Views to modularize HTML, resulting in clear, readable PDFs across multiple PDF pages. **Handling Large Datasets: \ Avoid loading large datasets into memory all at once. Use pagination or streaming techniques to maintain performance when converting very large HTML documents. Desafíos de .NET MAUI **Bundling PDF Libraries: \ Properly package PDF converter libraries and dependencies for Android, iOS, Windows, and macOS using platform-specific builds and thorough testing to ensure reliable PDF generation. **Background PDF Generation: \ Run PDF conversions on background threads to prevent UI freezing. Use asynchronous programming patterns to keep the app responsive during PDF file creation. **Storage Permissions and Saving: \ Manage file system permissions correctly on mobile platforms. Save PDFs in accessible locations like Documents or Downloads folders, and handle permission denials gracefully. **Previewing PDFs: \ Integrate native PDF viewers or open external apps for PDF preview, improving user experience in client-side applications. **Memory Management: \ Optimize HTML content size and monitor memory usage to prevent crashes when handling very large or complex HTML pages on resource-constrained devices. Mejores prácticas para la conversión robusta de HTML a PDF Crear documentos PDF fiables y de alta calidad a partir de contenido HTML requiere atención tanto al HTML mismo como al proceso de conversión. Ofrece resultados consistentes y profesionales: HTML to PDF converter Optimizar HTML para la impresión Utilice @media para imprimir reglas CSS para personalizar su HTML específicamente para la salida de PDF. Esto le permite ocultar elementos de interfaz de usuario innecesarios, ajustar las fuentes y aplicar estilos optimizados para imprimir o renderizar PDF. La página de control rompe explícitamente con las propiedades CSS como la página-break-antes, la página-break-después y la página-break-dentro para evitar las particiones incómodas en sus páginas PDF. Incorporar imágenes utilizando URI de datos o asegurarse de que las URL sean estables y accesibles durante la conversión para evitar imágenes PDF rotas o perdidas. Considere si el rendimiento del lado del cliente con JavaScript o la generación de HTML del lado del servidor es más eficiente para su caso de uso, especialmente para contenido dinámico o interactivo. Errores y resiliencia Implemente robustos bloques de búsqueda alrededor de su lógica de conversión de PDF para manejar fallos inesperados con gracia. Utilice los mecanismos de retraso y retraso para recuperarse de errores transitorios, especialmente cuando se convierten documentos HTML muy grandes o complejos. Logotipo Mantenga registros detallados de fallos de conversión, bloqueos de rendimiento y uso de recursos. Esto ayuda a diagnosticar problemas con su API o biblioteca de convertidores de PDF y optimizar el tubo de conversión. Tuning de rendimiento Benchmarque diferentes bibliotecas de PDF o herramientas usando su contenido HTML típico para identificar la opción más rápida y precisa. Optimize your HTML by minimizing unnecessary styles, scripts, and large images to speed up rendering. Utilice el procesamiento de lotes donde sea posible para manejar múltiples conversiones de manera eficiente. Elegir la herramienta adecuada Basar su elección de convertidor de PDF en factores clave: fidelidad de rendimiento (especialmente soporte CSS/JS), rendimiento, costes de licencia y facilidad de implementación en su plataforma .NET Core o aplicaciones de núcleo neto. Equilibrar la necesidad de PDFs de píxel-perfecto contra las restricciones de recursos y la complejidad del desarrollo. Accesibilidad (opcional pero valiosa) Generar PDFs accesibles utilizando etiquetas HTML semánticas y la estructura correcta del documento. Asegúrese de que sus PDFs soporten lectores de pantalla y siga los estándares PDF/UA si la accesibilidad es una prioridad. Conclusion & Future Outlook Los desarrolladores tienen una variedad de herramientas, desde renderizadores basados en navegador completo como PuppeteerSharp, bibliotecas comerciales versátiles como IronPDF, hasta envases de línea de comandos de código abierto como DinkToPdf, cada uno adaptado a diferentes necesidades y entornos de proyecto. Conversión HTML a PDF A medida que .NET continúa evolucionando con nuevas versiones y plataformas como .NET MAUI, la integración y el rendimiento de la generación de PDF solo se mejorarán, lo que facilita la creación de documentos PDF dinámicos de alta calidad de forma programática. Cuando se trata de generar PDF en .NET Core, haga la elección correcta desde el principio. es la herramienta líder en la industria diseñada para satisfacer los requisitos más exigentes de su proyecto. Experimente con estas herramientas para encontrar las que mejor se adapten a las necesidades de su proyecto. Comparte sus experiencias con la comunidad y contribuya al creciente ecosistema de generación de PDF en las aplicaciones .NET Core. IronPDF Pruebe hoy