Crear PDF en C# a partir de Archivo HTML
IronPDF convierte HTML a documentos PDF programáticamente.
Cómo crear un PDF en C#: ejemplo de HTML a PDF
El código fuente de todo este artículo está disponible para C# como una Descarga del código fuente del proyecto HTML a PDF en C#.
El siguiente tutorial te guiará a través del proceso de usar IronPDF como un Generador de PDF en C#. Cubre lo básico así como muchos temas avanzados de C# PDF.
HTML a PDF C#
- Descargar la biblioteca C# para convertir HTML a PDF
- Crear PDF a partir de una cadena HTML en código
- Crear PDF a partir de un archivo HTML en código
- Convierte URL a documento PDF con facilidad
- Exportar los archivos PDF a la ubicación deseada
Tutorial de HTML a PDF
Esta demostración te guía a través de ejemplos de cómo usar IronPdf. Solicitar demostraciones adicionales de casos de uso a Iron Software.
La demostración consiste en Hola Mundo, ejemplos de RenderHtmlAsPdf y RenderUrlAsPdf. Todos los ejemplos se pueden encontrar bajo los proyectos correspondientes en la solución IronPDF Demo.
Paso 1: Instalación
Puedes instalar IronPdf ya sea a través de NuGet. The package name is IronPDF NuGet Package.
Or you can use the Direct Library Download.
Paso 2: Hola mundo
Una vez que tienes IronPDF instalado y referenciado en tu proyecto, puedes comenzar a usarlo de inmediato escribiendo un par de cadenas:
// Create a new instance of ChromePdfRenderer
var chromePdfRenderer = new ChromePdfRenderer();// Create a new instance of ChromePdfRenderer
var chromePdfRenderer = new ChromePdfRenderer();' Create a new instance of ChromePdfRenderer
Dim chromePdfRenderer As New ChromePdfRenderer()Luego, si necesitas convertir HTML a PDF:
// Define HTML content to turn into PDF
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";
// Render the HTML string as a PDF
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);
// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));// Define HTML content to turn into PDF
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";
// Render the HTML string as a PDF
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);
// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));' Define HTML content to turn into PDF
Dim html = "<h1>Hello World!</h1><br><p>This is IronPdf.</p>"
' Render the HTML string as a PDF
Dim pdf = chromePdfRenderer.RenderHtmlAsPdf(html)
' Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"))O si quieres convertir una página web en un archivo PDF:
// URI of the page to turn into PDF
var uri = new Uri("http://www.google.com/ncr");
// Render the webpage as a PDF
using var pdf = chromePdfRenderer.RenderUrlAsPdf(uri);
// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));// URI of the page to turn into PDF
var uri = new Uri("http://www.google.com/ncr");
// Render the webpage as a PDF
using var pdf = chromePdfRenderer.RenderUrlAsPdf(uri);
// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));' URI of the page to turn into PDF
Dim uri As New Uri("http://www.google.com/ncr")
' Render the webpage as a PDF
Dim pdf = chromePdfRenderer.RenderUrlAsPdf(uri)
' Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"))¡Y eso es todo! Los resultados correspondientes son:
El resultado de convertir HTML a PDF**
El resultado de convertir una página web en un PDF
Por favor, encuentra el ejemplo de código bajo el proyecto IronPDFDemo.HelloWorld.
Paso 3: RenderHtmlAsPdf
Ejemplo 1
Para evaluar un ejemplo más realista, imagina una factura HTML que necesita convertirse en un PDF. Aquí está el código de cómo hacer eso.
Nota: Puedes encontrar la factura HTML bajo el proyecto IronPDFDemo.DemoWebSite (~/Static/TestInvoice1.html). Por favor, ten en cuenta que la factura tiene CSS personalizado para el tipo de medio "print".
La factura original se ve así en el navegador:

Para convertir esto en un archivo PDF, se utilizan códigos similares al ejemplo de HolaMundo anterior, siendo la diferencia el archivo HTML de origen.
// Read HTML from file
var html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"));
var chromePdfRenderer = new ChromePdfRenderer();
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"));// Read HTML from file
var html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"));
var chromePdfRenderer = new ChromePdfRenderer();
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"));' Read HTML from file
Dim html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"))
Dim chromePdfRenderer As New ChromePdfRenderer()
Dim pdf = chromePdfRenderer.RenderHtmlAsPdf(html)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"))El resultado es:
Generar un archivo PDF desde HTML
¡Se ve genial! Por favor, encuentra el ejemplo de código bajo el proyecto IronPDFDemo.RenderHtmlAdPdfDemo.
También consulta esta pregunta sobre Cómo usar documentos HTML o cadenas con arreglos de bytes en IronPDF
Ejemplo 2
Esta sección ayudará a personalizar el PDF resultante del Ejemplo 1. Por ejemplo, añadirá márgenes personalizados, un encabezado con el título del documento, un pie de página con la fecha de creación y números de página y algo de CSS personalizado para el tipo de medio "print" que una factura estándar tiene. Para hacer esto, se inicializa una instancia de ChromePdfRenderOptions y se pasa al constructor de ChromePdfRenderer.
// Configure rendering options with margins, headers, and footers
var pdfRenderingOptions = new ChromePdfRenderOptions()
{
MarginTop = 50,
MarginBottom = 50,
TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
},
TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
},
CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
};
var chromePdfRenderer = new ChromePdfRenderer(pdfRenderingOptions);// Configure rendering options with margins, headers, and footers
var pdfRenderingOptions = new ChromePdfRenderOptions()
{
MarginTop = 50,
MarginBottom = 50,
TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
},
TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
},
CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
};
var chromePdfRenderer = new ChromePdfRenderer(pdfRenderingOptions);' Configure rendering options with margins, headers, and footers
Dim pdfRenderingOptions = New ChromePdfRenderOptions() With {
.MarginTop = 50,
.MarginBottom = 50,
.TextHeader = New TextHeaderFooter() With {
.CenterText = "{pdf-title}",
.DrawDividerLine = True,
.FontSize = 16
},
.TextFooter = New TextHeaderFooter() With {
.LeftText = "{date} {time}",
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True,
.FontSize = 14
},
.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
}
Dim chromePdfRenderer As New ChromePdfRenderer(pdfRenderingOptions)Consejo: En lugar de pasar opciones como parámetro en el constructor, puedes establecer el campo correspondiente para una instancia de ChromePdfRenderer:
var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;Dim chromePdfRenderer As New ChromePdfRenderer()
chromePdfRenderer.RenderingOptions = pdfRenderingOptionsNota: Las características de encabezado y pie de página fusionan la funcionalidad, lo que significa que todos los campos de fusión ({page}, {total-pages}, {url}, {date}, {time}, {html-title}, {pdf-title}) se pueden poblar con los datos correspondientes.
El resto del código es el mismo que en el Ejemplo 1. El resultado es:
Generar una factura con encabezado y pie de página
Los márgenes, encabezados, pies de página y CSS personalizados para el tipo de medio "print" están ahora en su lugar. Por favor, encuentra el ejemplo de código bajo el proyecto IronPDFDemo.RenderHtmlAdPdfDemo. Se pueden encontrar más configuraciones en la referencia API de IronPDF.
Paso 4: RenderUrlAsPdf
Configuración
Para ejecutar ejemplos de esta sección necesitas alojar IronPDFDemo.DemoWebSite localmente. Para hacer eso en IIS Express:
- Navega a DemoWebSite
- Haz clic derecho > Establecer como Proyecto de Inicio
- Inicia sin depuración (Ctrl+F5)
- Navega a tu
{baseurl}/Static/TestInvoice1.htmlpara asegurarte de que está funcionando. Esta es la URLhttp://localhost:51169/Static/TestInvoice1.html(será la misma para ti si no cambias la configuración correspondiente del proyecto).
Ejemplo 1
En esta sección, la factura del DemoWebSite alojado se convierte en un PDF usando el mismo código que el ejemplo de HolaMundo. La diferencia reside en la URL alojada:
// URL of the hosted invoice webpage
var uri = new Uri("http://localhost:51169/Static/TestInvoice1.html");
var urlToPdf = new ChromePdfRenderer();
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"));// URL of the hosted invoice webpage
var uri = new Uri("http://localhost:51169/Static/TestInvoice1.html");
var urlToPdf = new ChromePdfRenderer();
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"));' URL of the hosted invoice webpage
Dim uri As New Uri("http://localhost:51169/Static/TestInvoice1.html")
Dim urlToPdf = New ChromePdfRenderer()
Dim pdf = urlToPdf.RenderUrlAsPdf(uri)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"))El resultado es:
Generar un sitio web alojado en un PDF
Esto es genial y se ve como se esperaba. Por favor, encuentra el ejemplo de código dentro del proyecto IronPDFDemo.RenderUrlAsPdfDemo.
Ejemplo 2
Muchos sitios web a menudo están protegidos por un método de autenticación. Esta sección usa un nombre de usuario y contraseña proporcionados durante el proceso de renderización de un archivo PDF con alguna personalización: márgenes personalizados, un encabezado con el título del documento, un pie de página con la fecha de creación y páginas, y CSS personalizado para el tipo de medio "print". La URL para la factura está en http://localhost:51169/Invoice.
Acceder a http://localhost:51169/Invoice resulta en el formulario "Autenticación requerida":
Formulario de autenticación requerida
Nota: Las credenciales son "testUser"/"testPassword".
Entonces, ¿cómo evitar la autenticación? Estableciendo HttpLoginCredentials:
// URL of the protected invoice webpage
var uri = new Uri("http://localhost:51169/Invoice");
// Configure renderer with login credentials to bypass authentication
var urlToPdf = new ChromePdfRenderer
{
RenderingOptions = new ChromePdfRenderOptions()
{
MarginTop = 50,
MarginBottom = 50,
TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
},
TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
},
CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
},
// Set login credentials to bypass basic authentication
LoginCredentials = new HttpLoginCredentials()
{
NetworkUsername = "testUser",
NetworkPassword = "testPassword"
}
};
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"));// URL of the protected invoice webpage
var uri = new Uri("http://localhost:51169/Invoice");
// Configure renderer with login credentials to bypass authentication
var urlToPdf = new ChromePdfRenderer
{
RenderingOptions = new ChromePdfRenderOptions()
{
MarginTop = 50,
MarginBottom = 50,
TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
},
TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
},
CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
},
// Set login credentials to bypass basic authentication
LoginCredentials = new HttpLoginCredentials()
{
NetworkUsername = "testUser",
NetworkPassword = "testPassword"
}
};
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"));' URL of the protected invoice webpage
Dim uri As New Uri("http://localhost:51169/Invoice")
' Configure renderer with login credentials to bypass authentication
Dim urlToPdf = New ChromePdfRenderer With {
.RenderingOptions = New ChromePdfRenderOptions() With {
.MarginTop = 50,
.MarginBottom = 50,
.TextHeader = New TextHeaderFooter() With {
.CenterText = "{pdf-title}",
.DrawDividerLine = True,
.FontSize = 16
},
.TextFooter = New TextHeaderFooter() With {
.LeftText = "{date} {time}",
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True,
.FontSize = 14
},
.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
},
.LoginCredentials = New HttpLoginCredentials() With {
.NetworkUsername = "testUser",
.NetworkPassword = "testPassword"
}
}
Dim pdf = urlToPdf.RenderUrlAsPdf(uri)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"))Nota: Se utiliza la misma personalización que para el Example2 de ChromePdfRenderer.
El resultado es:
Generar un sitio HTML con credenciales a un archivo PDF
Todo está en su lugar. Por favor, encuentra un ejemplo de código bajo el proyecto IronPDFDemo.RenderUrlAsPdfDemo. Si te preguntas cómo sería el resultado sin HttpLoginCredentials, aquí está:
Generar un archivo PDF vacío sin credenciales
Consulta también el Tutorial de .NET HTML a PDF de Jean
Además, IronPDF también puede interactuar con PDF de diferentes maneras: