Conversión HTML a PDF de ASP.NET con IronPDF
IronPDF convierte HTML ASP.NET a PDF utilizando un motor de renderizado basado en Chrome que conserva el estilo CSS y la funcionalidad de JavaScript. Este tutorial muestra cómo convertir HTML a PDF en aplicaciones ASP.NET Core con énfasis en el caso de uso más frecuente del mercado ibérico: generación de facturas conformes con VeriFactu que el RDL 15/2025 sitúa como obligatorias para software de facturación a partir del 1 de enero de 2027 para Impuesto de Sociedades / 1 de julio de 2027 para el resto de contribuyentes.
La generación de facturas electrónicas españolas desde ASP.NET Core combina varios elementos regulatorios simultáneos: cabecera con NIF del emisor y del receptor validados con dígito de control, partidas con desglose por tipo de IVA (general 21 %, reducido 10 %, superreducido 4 %), código QR de la AEAT que enlaza con el verificador en sede electrónica, leyenda mandatoria *`VERIFACTU** (con asterisco intermedio preservado verbatim),huella` encadenada del registro de facturación, y patrón híbrido PDF/A-3 con Facturae XML embebido cuando el flujo incluye Crea y Crece B2B. IronPDF cubre la capa de renderizado Chrome con precisión de píxel, la conversión PDF/A-3 y el embebido del XML estructurado como anexo.
IronPDF simplifica este proceso de conversión de ASP HTML a PDF al proporcionar un motor de renderizado confiable basado en Chrome que preserva el formato HTML, el estilo CSS y la funcionalidad de JavaScript en los documentos PDF resultantes. Este tutorial lo guía a través de métodos efectivos para convertir HTML a PDF en aplicaciones ASP.NET Core utilizando la biblioteca IronPDF , incluido su motor de renderizado Chrome para obtener resultados de píxeles perfectos.

¿Por qué los desarrolladores necesitan la conversión de HTML a PDF?
Las aplicaciones ASP.NET Core a menudo generan contenido HTML dinámico que los usuarios necesitan descargar, compartir o archivar como archivos PDF. La conversión de HTML a PDF proporciona varias ventajas clave sobre simplemente guardar páginas web o tomar capturas de pantalla.
Los documentos PDF mantienen un formato consistente en todos los dispositivos y plataformas, asegurando que tus facturas se vean idénticas ya sea en Windows, Mac o dispositivos móviles. Son ideales para documentos que requieren firmas digitales PAdES con certificado FNMT-RCM o equivalente cualificado eIDAS, restricciones de seguridad bajo LOPDGDD, o impresión profesional. La conversión de PDF del lado del servidor elimina la necesidad de que los usuarios tengan instalado un software específico y proporciona un mejor control sobre el resultado final — relevante bajo el régimen sancionador AEPD que la AEPD aplica con un historial notoriamente más agresivo que las autoridades de control análogas europeas.
Caso de uso ibérico dominante: facturas conformes con VeriFactu desde ASP.NET Core
Para los desarrolladores .NET que sirven al mercado español, el caso de uso de mayor leverage es la generación de facturas conformes con el régimen VeriFactu desde una aplicación ASP.NET Core que opera como ERP, software de facturación o backoffice de gestión. El patrón típico:
- Vista Razor
factura.cshtmlcon plantilla HTML/CSS que incluye cabecera con razón social, NIF, dirección fiscal del emisor y del receptor, tabla de partidas con desglose por tipo de IVA, totales con formato ibérico (1.234,56 €con coma decimal y punto miles), espacio para el QR AEAT y la leyenda mandatoria. - Servicio ASP.NET Core que recibe la factura del controlador, calcula el
hashencadenado VeriFactu con lahuelladel registro anterior, genera el QR AEAT con IronQR, renderiza la vista Razor a HTML, y pasa el HTML a IronPDF para conversión a PDF. - IronPDF aplica el motor Chrome para renderizar el HTML con precisión de píxel, exporta a PDF/A-3 si el flujo Crea y Crece exige el patrón híbrido con Facturae XML embebido, y aplica firma PAdES con certificado de Sello Electrónico de Entidad emitido por FNMT-RCM.
- El sistema envía el PDF al receptor (correo electrónico, descarga desde portal de cliente, o plataforma de cumplimiento EDICOM/Sovos/Seres/Voxel que lo remite a su vez al destinatario final).
Este patrón concentra varias decisiones de diseño relevantes en el contexto ibérico que el desarrollador debe tomar conscientemente: arquitectura on-premise (sin enviar el HTML ni el PDF a servicios externos durante la generación, alineado con la preferencia ibérica por minimizar exposición LOPDGDD), uso del certificado de entidad y no de persona física para la firma de salida automatizada, gestión segura de la contraseña del certificado (Azure Key Vault, AWS Secrets Manager o solución homologada de la organización), y trazabilidad del acceso para auditorías AEPD.
Otros casos frecuentes: modelos AEAT, certificados, expedientes
Más allá de facturas VeriFactu, casos comunes en aplicaciones ASP.NET Core ibéricas incluyen: generación de Modelos AEAT (303 trimestral del IVA, 390 anual, 347 operaciones con terceros, 720 bienes en el extranjero) que el ERP prefill desde libro registro SII; emisión de certificados (asistencia, formación, antigüedad) con sello del organismo y firma PAdES; producción de expedientes administrativos electrónicos bajo Esquema Nacional de Interoperabilidad con plataformas como Inside/ARTAS/GEISER; y exportación de informes financieros bajo régimen del Banco de España (Real Decreto 84/2015) o de la DGSFP para seguros. IronPDF se utiliza en estos casos como componente embebido dentro del producto del integrador, no como sistema completo de cumplimiento — esa capa la cubren plataformas especializadas (EDICOM, Sovos, Seres, Voxel) que se conectan al producto del integrador vía API.

¿Cómo instalar IronPDF en un proyecto ASP.NET ?
Empezar con IronPDF en tu proyecto ASP.NET Core es sencillo. La biblioteca es compatible con .NET 6, 8 y 10, lo que la hace compatible con todas las aplicaciones ASP.NET Core modernas. Para conocer los requisitos de plataforma específicos, consulte la guía de compatibilidad de Windows o las instrucciones de configuración de Linux .
La forma más rápida de agregar IronPDF a su proyecto es a través del Administrador de paquetes NuGet . Haga clic derecho en su proyecto en el Explorador de soluciones, seleccione "Administrar paquetes NuGet " y busque IronPDF. Haga clic en Instalar en la última versión. Para obtener instrucciones detalladas, consulte la guía de instalación de IronPDF .
Instalar usando la consola del administrador de paquetes:
Install-Package IronPdf
Install-Package IronPdf
O utilizando la CLI de .NET:
dotnet add package IronPdf
dotnet add package IronPdf

¿Cómo configurar IronPDF después de la instalación?
Una vez instalado, agregue la directiva using IronPdf; a cualquier archivo C# donde trabajará con la generación de PDF. Esta importación le da acceso a la clase ChromePdfRenderer y a todas las opciones de configuración de renderizado.
Para la mayoría de las aplicaciones ASP.NET Core , IronPDF funciona inmediatamente después de la instalación. Sin embargo, puede configurar opciones globales en su archivo Program.cs para ajustar el comportamiento para su entorno de alojamiento específico: Windows, Linux, Docker o nube:
using IronPdf;
// Optional global configuration (place in Program.cs)
Installation.TempFolderPath = @"C:\Temp\IronPdf\";
Installation.LinuxAndDockerDependenciesAutoConfig = true;
// Enable logging for debugging PDF rendering issues
Installation.LoggingMode = IronPdf.Logging.LoggingMode.All;
Installation.LogFilePath = "IronPdfLog.log";
// Required for Azure App Service deployments
Installation.AzureQuickDeployment = true;
using IronPdf;
// Optional global configuration (place in Program.cs)
Installation.TempFolderPath = @"C:\Temp\IronPdf\";
Installation.LinuxAndDockerDependenciesAutoConfig = true;
// Enable logging for debugging PDF rendering issues
Installation.LoggingMode = IronPdf.Logging.LoggingMode.All;
Installation.LogFilePath = "IronPdfLog.log";
// Required for Azure App Service deployments
Installation.AzureQuickDeployment = true;
Imports IronPdf
' Optional global configuration
Installation.TempFolderPath = "C:\Temp\IronPdf\"
Installation.LinuxAndDockerDependenciesAutoConfig = True
' Enable logging for debugging PDF rendering issues
Installation.LoggingMode = IronPdf.Logging.LoggingMode.All
Installation.LogFilePath = "IronPdfLog.log"
' Required for Azure App Service deployments
Installation.AzureQuickDeployment = True
Para las implementaciones de Azure , habilite AzureQuickDeployment para obtener un rendimiento óptimo. Para entornos de producción, implemente un registro personalizado para monitorear las operaciones de generación de PDF y detectar fallas de representación de manera temprana.

¿Cómo convertir cadenas HTML a PDF?
La operación más fundamental en IronPDF es convertir cadenas HTML directamente a documentos PDF. Este enfoque es ideal cuando creas contenido HTML dinámicamente en tu aplicación ASP.NET o trabajas con plantillas HTML. El método RenderHtmlAsPdf proporciona flexibilidad para convertir HTML desde variables, generadores de cadenas o motores de plantillas.
// Create a PDF renderer instance
var renderer = new ChromePdfRenderer();
// Configure rendering options for print-quality output
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.RenderDelay = 500; // milliseconds to wait before capture
// Convert an HTML string to a PDF document
var pdf = renderer.RenderHtmlAsPdf("<h1>Sales Report</h1><p>Generated on: " + DateTime.Now + "</p>");
// Save the PDF to disk
pdf.SaveAs("report.pdf");
// Or get binary data to return as a file download
var pdfBytes = pdf.BinaryData;
// Create a PDF renderer instance
var renderer = new ChromePdfRenderer();
// Configure rendering options for print-quality output
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.RenderDelay = 500; // milliseconds to wait before capture
// Convert an HTML string to a PDF document
var pdf = renderer.RenderHtmlAsPdf("<h1>Sales Report</h1><p>Generated on: " + DateTime.Now + "</p>");
// Save the PDF to disk
pdf.SaveAs("report.pdf");
// Or get binary data to return as a file download
var pdfBytes = pdf.BinaryData;
' Create a PDF renderer instance
Dim renderer = New ChromePdfRenderer()
' Configure rendering options for print-quality output
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
renderer.RenderingOptions.RenderDelay = 500 ' milliseconds to wait before capture
' Convert an HTML string to a PDF document
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Sales Report</h1><p>Generated on: " & DateTime.Now & "</p>")
' Save the PDF to disk
pdf.SaveAs("report.pdf")
' Or get binary data to return as a file download
Dim pdfBytes = pdf.BinaryData
Este fragmento crea una instancia ChromePdfRenderer, que utiliza el motor Chromium para representar su HTML. El método RenderHtmlAsPdf acepta cualquier cadena HTML válida y devuelve un objeto PdfDocument que puede guardar en el disco o transmitir al navegador. Para la generación de PDF asincrónica , envuelva la llamada en Task.Run para evitar bloquear los subprocesos de solicitud.
¿Cómo se ve la salida PDF?

¿Cómo incluir estilos CSS e imágenes?
IronPDF admite totalmente el estilo CSS e integra imágenes de varias fuentes al convertir HTML a PDF. El renderizador maneja estilos en línea, hojas de estilo externas, fuentes web, gráficos SVG e imágenes codificadas en base64:
var html = @"
<style>
body { font-family: Arial, sans-serif; margin: 40px; }
h1 { color: #2c3e50; border-bottom: 2px solid #3498db; }
.highlight { background-color: #f1c40f; padding: 5px; }
.data-table { width: 100%; border-collapse: collapse; }
.data-table td { border: 1px solid #ddd; padding: 8px; }
</style>
<h1>Monthly Report</h1>
<p>This document includes <span class='highlight'>highlighted text</span> and table data.</p>
<table class='data-table'>
<tr><td>Product</td><td>Sales</td></tr>
<tr><td>Widget A</td><td>$1,234</td></tr>
</table>";
var renderer = new ChromePdfRenderer();
// Set base URL so relative resource paths resolve correctly
renderer.RenderingOptions.BaseUrl = new Uri("https://yourdomain.com/");
renderer.RenderingOptions.EnableJavaScript = true;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("styled-report.pdf");
var html = @"
<style>
body { font-family: Arial, sans-serif; margin: 40px; }
h1 { color: #2c3e50; border-bottom: 2px solid #3498db; }
.highlight { background-color: #f1c40f; padding: 5px; }
.data-table { width: 100%; border-collapse: collapse; }
.data-table td { border: 1px solid #ddd; padding: 8px; }
</style>
<h1>Monthly Report</h1>
<p>This document includes <span class='highlight'>highlighted text</span> and table data.</p>
<table class='data-table'>
<tr><td>Product</td><td>Sales</td></tr>
<tr><td>Widget A</td><td>$1,234</td></tr>
</table>";
var renderer = new ChromePdfRenderer();
// Set base URL so relative resource paths resolve correctly
renderer.RenderingOptions.BaseUrl = new Uri("https://yourdomain.com/");
renderer.RenderingOptions.EnableJavaScript = true;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("styled-report.pdf");
Dim html As String = "
<style>
body { font-family: Arial, sans-serif; margin: 40px; }
h1 { color: #2c3e50; border-bottom: 2px solid #3498db; }
.highlight { background-color: #f1c40f; padding: 5px; }
.data-table { width: 100%; border-collapse: collapse; }
.data-table td { border: 1px solid #ddd; padding: 8px; }
</style>
<h1>Monthly Report</h1>
<p>This document includes <span class='highlight'>highlighted text</span> and table data.</p>
<table class='data-table'>
<tr><td>Product</td><td>Sales</td></tr>
<tr><td>Widget A</td><td>$1,234</td></tr>
</table>"
Dim renderer As New ChromePdfRenderer()
' Set base URL so relative resource paths resolve correctly
renderer.RenderingOptions.BaseUrl = New Uri("https://yourdomain.com/")
renderer.RenderingOptions.EnableJavaScript = True
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("styled-report.pdf")
El renderizador procesa funciones CSS3, incluidos diseños de cuadrícula y flexbox, con total fidelidad. Para diseños complejos, utilice la guía de compatibilidad de Bootstrap o implemente saltos de página personalizados utilizando reglas CSS page-break-before.
¿Cómo convertir vistas ASP.NET Core a PDF?
La conversión de vistas completas de ASP.NET Core a PDF es un requisito común para generar informes basados en plantillas existentes. IronPDF admite vistas Razor , páginas ASPX e incluso componentes Blazor .
¿Cómo convertir las vistas del controlador?
Representa una vista en una cadena HTML en tu controlador y luego pásala a IronPDF. Este enfoque funciona tanto con aplicaciones MVC Core como con MVC Framework:
[HttpGet]
public async Task<IActionResult> DownloadPdf()
{
var invoiceModel = new InvoiceModel
{
InvoiceNumber = 12345,
Date = DateTime.Now,
CustomerName = "Acme Corporation",
Items = new List<InvoiceItem>
{
new InvoiceItem { Description = "Service", Quantity = 1, Price = 100.0 },
new InvoiceItem { Description = "Support", Quantity = 2, Price = 50.0 }
},
Total = 200.0
};
// Render the Razor view to an HTML string first
var htmlContent = await RenderViewToString("Invoice", invoiceModel);
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
// Add a text header with the invoice number
renderer.RenderingOptions.TextHeader.CenterText = "Invoice #" + invoiceModel.InvoiceNumber;
renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Restrict copying while allowing printing
pdf.SecuritySettings.AllowUserPrinting = true;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
var fileName = $"invoice_{invoiceModel.InvoiceNumber}_{DateTime.Now:yyyyMMdd}.pdf";
return File(pdf.BinaryData, "application/pdf", fileName);
}
[HttpGet]
public async Task<IActionResult> DownloadPdf()
{
var invoiceModel = new InvoiceModel
{
InvoiceNumber = 12345,
Date = DateTime.Now,
CustomerName = "Acme Corporation",
Items = new List<InvoiceItem>
{
new InvoiceItem { Description = "Service", Quantity = 1, Price = 100.0 },
new InvoiceItem { Description = "Support", Quantity = 2, Price = 50.0 }
},
Total = 200.0
};
// Render the Razor view to an HTML string first
var htmlContent = await RenderViewToString("Invoice", invoiceModel);
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
// Add a text header with the invoice number
renderer.RenderingOptions.TextHeader.CenterText = "Invoice #" + invoiceModel.InvoiceNumber;
renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Restrict copying while allowing printing
pdf.SecuritySettings.AllowUserPrinting = true;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
var fileName = $"invoice_{invoiceModel.InvoiceNumber}_{DateTime.Now:yyyyMMdd}.pdf";
return File(pdf.BinaryData, "application/pdf", fileName);
}
Imports System
Imports System.Collections.Generic
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Mvc
<HttpGet>
Public Async Function DownloadPdf() As Task(Of IActionResult)
Dim invoiceModel = New InvoiceModel With {
.InvoiceNumber = 12345,
.Date = DateTime.Now,
.CustomerName = "Acme Corporation",
.Items = New List(Of InvoiceItem) From {
New InvoiceItem With {.Description = "Service", .Quantity = 1, .Price = 100.0},
New InvoiceItem With {.Description = "Support", .Quantity = 2, .Price = 50.0}
},
.Total = 200.0
}
' Render the Razor view to an HTML string first
Dim htmlContent = Await RenderViewToString("Invoice", invoiceModel)
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter
renderer.RenderingOptions.PrintHtmlBackgrounds = True
' Add a text header with the invoice number
renderer.RenderingOptions.TextHeader.CenterText = "Invoice #" & invoiceModel.InvoiceNumber
renderer.RenderingOptions.TextHeader.DrawDividerLine = True
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
' Restrict copying while allowing printing
pdf.SecuritySettings.AllowUserPrinting = True
pdf.SecuritySettings.AllowUserCopyPasteContent = False
Dim fileName = $"invoice_{invoiceModel.InvoiceNumber}_{DateTime.Now:yyyyMMdd}.pdf"
Return File(pdf.BinaryData, "application/pdf", fileName)
End Function
Este enfoque convierte primero la vista de Razor a HTML, luego la convierte a PDF y devuelve el archivo al navegador. Para escenarios de conversión sin cabeza sin una canalización ASP.NET completa, considere usar Razor.Templating.Core.
¿Qué aspecto tiene el PDF generado?

¿Cómo convertir una URL a PDF?
Para páginas web existentes, IronPDF puede transformar cualquier URL directamente en un archivo PDF. Este método admite cookies y encabezados HTTP personalizados para solicitudes autenticadas:
[HttpGet]
public IActionResult GeneratePdfFromUrl()
{
var renderer = new ChromePdfRenderer();
// Allow time for dynamic content to load before capture
renderer.RenderingOptions.WaitFor.RenderDelay = 2000;
renderer.RenderingOptions.ViewportWidth = 1920;
// Pass authorization headers if the page requires authentication
renderer.RenderingOptions.HttpHeaders.Add("Authorization", "Bearer your-token");
var pdf = renderer.RenderUrlAsPdf("https://yourwebsite.com/report");
// Compress embedded images to reduce file size
pdf.CompressImages(90);
return File(pdf.BinaryData, "application/pdf", "webpage.pdf");
}
[HttpGet]
public IActionResult GeneratePdfFromUrl()
{
var renderer = new ChromePdfRenderer();
// Allow time for dynamic content to load before capture
renderer.RenderingOptions.WaitFor.RenderDelay = 2000;
renderer.RenderingOptions.ViewportWidth = 1920;
// Pass authorization headers if the page requires authentication
renderer.RenderingOptions.HttpHeaders.Add("Authorization", "Bearer your-token");
var pdf = renderer.RenderUrlAsPdf("https://yourwebsite.com/report");
// Compress embedded images to reduce file size
pdf.CompressImages(90);
return File(pdf.BinaryData, "application/pdf", "webpage.pdf");
}
Imports Microsoft.AspNetCore.Mvc
<HttpGet>
Public Function GeneratePdfFromUrl() As IActionResult
Dim renderer = New ChromePdfRenderer()
' Allow time for dynamic content to load before capture
renderer.RenderingOptions.WaitFor.RenderDelay = 2000
renderer.RenderingOptions.ViewportWidth = 1920
' Pass authorization headers if the page requires authentication
renderer.RenderingOptions.HttpHeaders.Add("Authorization", "Bearer your-token")
Dim pdf = renderer.RenderUrlAsPdf("https://yourwebsite.com/report")
' Compress embedded images to reduce file size
pdf.CompressImages(90)
Return File(pdf.BinaryData, "application/pdf", "webpage.pdf")
End Function
Este método maneja todos los recursos externos, incluidas hojas de estilo, scripts e imágenes. Para sitios con mucho uso de JavaScript, ajuste el retraso de renderizado o use condiciones WaitFor para activar la captura solo después de que se activen eventos DOM específicos.
¿Cuál es el resultado de la conversión de URL?

¿Cómo personalizar la salida PDF?
IronPDF ofrece amplias opciones de personalización para controlar cómo se generan sus documentos PDF a partir de HTML. Estas configuraciones le ayudan a crear archivos profesionales que cumplen requisitos específicos de formato y diseño de página. Explore la gama completa de opciones de renderizado disponibles.
¿Cómo se configura el tamaño de página y los márgenes?
Controle con precisión el tamaño del papel y los márgenes para diseños de documentos profesionales:
var renderer = new ChromePdfRenderer();
// Set standard paper size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
// Set page margins in millimeters
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
// Define a custom paper size in inches when needed
renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11);
// Use print CSS media type for print-optimized output
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
var renderer = new ChromePdfRenderer();
// Set standard paper size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
// Set page margins in millimeters
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
// Define a custom paper size in inches when needed
renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11);
// Use print CSS media type for print-optimized output
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
Dim renderer = New ChromePdfRenderer()
' Set standard paper size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait
' Set page margins in millimeters
renderer.RenderingOptions.MarginTop = 25
renderer.RenderingOptions.MarginBottom = 25
renderer.RenderingOptions.MarginLeft = 20
renderer.RenderingOptions.MarginRight = 20
' Define a custom paper size in inches when needed
renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11)
' Use print CSS media type for print-optimized output
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
renderer.RenderingOptions.PrintHtmlBackgrounds = True
Puede elegir entre tamaños de papel estándar o definir dimensiones personalizadas, establecer la orientación vertical u horizontal y ajustar los márgenes para que coincidan con sus requisitos de diseño. Para necesidades de orientación, explore las opciones de rotación de página .
¿Cómo agregar encabezados y pies de página?
Agregar encabezados y pies de página consistentes mejora la apariencia profesional de sus documentos PDF. IronPDF admite encabezados de texto simple y encabezados HTML completos con imágenes y CSS incrustados:
// Simple text header and footer with dynamic placeholders
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Company Report",
LeftText = "{date}",
RightText = "Confidential",
FontSize = 12,
FontFamily = "Arial",
DrawDividerLine = true
};
renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
CenterText = "Page {page} of {total-pages}",
LeftText = "© 2025 Company Name",
DrawDividerLine = true
};
// For complex branded headers, use an HTML fragment instead
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = @"
<div style='display: flex; justify-content: space-between; align-items: center;'>
<img src='logo.png' height='30' />
<h2>Monthly Report</h2>
<span>{date}</span>
</div>",
MaxHeight = 50,
DrawDividerLine = true
};
// Simple text header and footer with dynamic placeholders
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Company Report",
LeftText = "{date}",
RightText = "Confidential",
FontSize = 12,
FontFamily = "Arial",
DrawDividerLine = true
};
renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
CenterText = "Page {page} of {total-pages}",
LeftText = "© 2025 Company Name",
DrawDividerLine = true
};
// For complex branded headers, use an HTML fragment instead
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = @"
<div style='display: flex; justify-content: space-between; align-items: center;'>
<img src='logo.png' height='30' />
<h2>Monthly Report</h2>
<span>{date}</span>
</div>",
MaxHeight = 50,
DrawDividerLine = true
};
' Simple text header and footer with dynamic placeholders
renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
.CenterText = "Company Report",
.LeftText = "{date}",
.RightText = "Confidential",
.FontSize = 12,
.FontFamily = "Arial",
.DrawDividerLine = True
}
renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
.CenterText = "Page {page} of {total-pages}",
.LeftText = "© 2025 Company Name",
.DrawDividerLine = True
}
' For complex branded headers, use an HTML fragment instead
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
.HtmlFragment = "
<div style='display: flex; justify-content: space-between; align-items: center;'>
<img src='logo.png' height='30' />
<h2>Monthly Report</h2>
<span>{date}</span>
</div>",
.MaxHeight = 50,
.DrawDividerLine = True
}
Los encabezados y pies de página admiten marcadores de posición especiales para números de página , fechas y contenido dinámico. También puede aplicar diferentes encabezados a páginas específicas para un control más granular.
¿Cuáles son las mejores prácticas para la conversión de PDF ASP.NET ?
Para garantizar un rendimiento y una calidad óptimos al convertir HTML a PDF, siga estas prácticas comprobadas. Implementar estrategias de optimización del rendimiento para implementaciones a gran escala.
Siempre pruebe primero la representación HTML en un navegador para verificar el estilo y el diseño antes de generar archivos PDF. Utilice URL base para recursos externos, ya que las rutas relativas pueden provocar errores de resolución durante la conversión. Para páginas con mucho uso de JavaScript, agregue retrasos de renderizado para garantizar una carga completa antes de la captura.
El siguiente ejemplo muestra un servicio de PDF reutilizable que centraliza la configuración y maneja la generación asincrónica:
public class PdfService
{
private readonly ChromePdfRenderer _renderer;
public PdfService()
{
_renderer = new ChromePdfRenderer();
_renderer.RenderingOptions.RenderDelay = 100;
_renderer.RenderingOptions.Timeout = 60000;
_renderer.RenderingOptions.EnableJavaScript = true;
_renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
}
public async Task<byte[]> GeneratePdfAsync(string html, bool compressImages = false)
{
var pdf = await Task.Run(() => _renderer.RenderHtmlAsPdf(html));
if (compressImages)
{
pdf.CompressImages(90);
}
return pdf.BinaryData;
}
}
public class PdfService
{
private readonly ChromePdfRenderer _renderer;
public PdfService()
{
_renderer = new ChromePdfRenderer();
_renderer.RenderingOptions.RenderDelay = 100;
_renderer.RenderingOptions.Timeout = 60000;
_renderer.RenderingOptions.EnableJavaScript = true;
_renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
}
public async Task<byte[]> GeneratePdfAsync(string html, bool compressImages = false)
{
var pdf = await Task.Run(() => _renderer.RenderHtmlAsPdf(html));
if (compressImages)
{
pdf.CompressImages(90);
}
return pdf.BinaryData;
}
}
Public Class PdfService
Private ReadOnly _renderer As ChromePdfRenderer
Public Sub New()
_renderer = New ChromePdfRenderer()
_renderer.RenderingOptions.RenderDelay = 100
_renderer.RenderingOptions.Timeout = 60000
_renderer.RenderingOptions.EnableJavaScript = True
_renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
End Sub
Public Async Function GeneratePdfAsync(html As String, Optional compressImages As Boolean = False) As Task(Of Byte())
Dim pdf = Await Task.Run(Function() _renderer.RenderHtmlAsPdf(html))
If compressImages Then
pdf.CompressImages(90)
End If
Return pdf.BinaryData
End Function
End Class
Considere implementar el almacenamiento en caché para los documentos generados con frecuencia para reducir la carga del servidor. Utilice métodos asíncronos para una mejor escalabilidad en aplicaciones web. Para escenarios de gran volumen, considere el procesamiento paralelo o la implementación de IronPDF como un microservicio .
Al implementar en producción, configure las rutas de carpetas temporales adecuadas y asegúrese de que su entorno de alojamiento tenga instaladas las dependencias necesarias, especialmente para implementaciones de Linux . Supervise el uso de la memoria e implemente patrones de eliminación adecuados utilizando elpatrón IDisposable de la guía .NET de Microsoft. Al trabajar con documentos HTML grandes, utilice métodos de transmisión para minimizar la sobrecarga de memoria.
La siguiente tabla resume los tres métodos de conversión principales y cuándo utilizar cada uno:
| Método | Mejor para | API clave | Soporte de autenticación |
|---|---|---|---|
| Cadena HTML | Contenido dinámico integrado en el código | `RenderHtmlAsPdf()` | Iniciar suscripción |
| Vista Razor | Vistas y plantillas MVC existentes | `RenderHtmlAsPdf()` | Contexto de la sesión |
| URL | Páginas web públicas o autenticadas | `RenderUrlAsPdf()` | Cookies, encabezados, credenciales |
¿Qué sigue para su proceso de generación de PDF?
Convertir HTML de ASP a PDF en aplicaciones ASP.NET Core se vuelve sencillo con IronPDF. El renderizado basado en Chrome de la biblioteca asegura una conversión precisa al tiempo que ofrece extensas opciones de personalización para la generación de documentos profesionales. Explore funciones avanzadas como compatibilidad con PDF/A , firmas digitales y creación de formularios .
Ya sea que trabaje con cadenas HTML, URL o vistas Razor completas, IronPDF conserva el formato exacto, el estilo CSS y el comportamiento de JavaScript . Considere explorar la compresión de PDF , la marca de agua y la gestión de metadatos para un control completo de los documentos.
Inicie hoy mismo su prueba gratuita de 30 días para implementar la generación profesional de PDF en sus aplicaciones ASP.NET Core. ¿Necesita ayuda para elegir? Vea las opciones de licencia o reserve una demostración con el equipo.

Preguntas Frecuentes
¿Cuál es la mejor manera de convertir HTML a PDF en ASP.NET Core?
La mejor manera de convertir HTML a PDF en ASP.NET Core es usando IronPDF. Proporciona una solución sin problemas para transformar contenido HTML, asegurando una generación de PDF de alta calidad.
¿Por qué debería usar IronPDF para convertir HTML a PDF?
IronPDF ofrece características robustas como un renderizado preciso, soporte para CSS y JavaScript, y la capacidad de manejar documentos HTML complejos. Esto lo hace ideal para generar PDFs de calidad profesional desde aplicaciones ASP.NET.
¿Puede IronPDF manejar contenido dinámico en aplicaciones ASP.NET?
Sí, IronPDF puede manejar eficazmente contenido dinámico en aplicaciones ASP.NET. Procesa y convierte contenido HTML dinámico en PDFs, lo que es perfecto para crear facturas, informes y otros documentos.
¿Es posible incluir estilos CSS en el PDF generado usando IronPDF?
Absolutamente, IronPDF admite estilos CSS. Puedes aplicar tus hojas de estilo CSS existentes para asegurar que la salida de PDF coincida con el diseño y la disposición de tu contenido HTML.
¿Cómo admite IronPDF JavaScript en la conversión de HTML a PDF?
IronPDF admite completamente JavaScript, permitiéndote incluir elementos dinámicos y contenido interactivo en tu HTML que se renderizan con precisión en el PDF resultante.
¿Cuáles son algunos casos de uso comunes para convertir HTML a PDF en ASP.NET?
Casos de uso comunes incluyen la generación de facturas, la creación de informes detallados, la producción de certificados y la oferta de contenido descargable como libros electrónicos y folletos directamente desde aplicaciones ASP.NET.
¿Cómo asegura IronPDF la calidad de la salida PDF?
IronPDF asegura una salida PDF de alta calidad al renderizar con precisión contenido HTML, incluidas fuentes, imágenes, tablas y otros elementos, manteniendo la fidelidad del diseño original.
¿Puedo automatizar el proceso de conversión de HTML a PDF con IronPDF?
Sí, IronPDF se puede integrar en flujos de trabajo de automatización dentro de aplicaciones ASP.NET, permitiéndote automatizar la conversión de HTML a PDF como parte de los procesos de tu aplicación.


