USO DE IRONPDF

Crear PDF en C# a partir de un archivo HTML

Actualizado 24 de enero, 2022
Compartir:

IronPDF convierte documentos HTML a PDF mediante programación.

Cómo crear un PDF en C# - Ejemplo de HTML a PDF

Un ejemplo sencillo de esta técnica puede ser descargado y visualizado.

El código fuente de todo este artículo está disponible para C# como archivo C# HTML to PDF Project Source Code Descargar.

El siguiente tutorial le guiará a través del proceso de uso de IronPDF como un Generador PDF C#. Cubre los aspectos básicos, así como muchos temas avanzados de C# PDF.

Tutorial de HTML a PDF

Esta demostración le muestra ejemplos de cómo utilizar IronPdf. No dude en solicitar otras demostraciones de casos de uso..

La demo consiste en Hello World, RenderHtmlAsPdf y RenderUrlAsPdf ejemplos. Todos los ejemplos se encuentran en los proyectos correspondientes de la solución IronPDF Demo.

Paso 1: Instalación

Puedes instalar IronPdf a través de NuGet. El nombre del paquete es IronPDF.

O puede utilizar enlace directo para descargar la biblioteca.

Paso 2: Hola Mundo

Una vez que tenga IronPDF instalado y referenciado en su proyecto, puede empezar a utilizarlo inmediatamente escribiendo un par de cadenas:

var ChromePdfRenderer = new ChromePdfRenderer();  //  nueva instancia de ChromePdfRenderer
var ChromePdfRenderer = new ChromePdfRenderer();  //  nueva instancia de ChromePdfRenderer
Dim ChromePdfRenderer As New ChromePdfRenderer() '  nueva instancia de ChromePdfRenderer
VB   C#

entonces si necesitas convertir HTML en PDF

//  html para convertir en pdf
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";
//  convertir html en pdf
using var pdf = ChromePdfRenderer.RenderHtmlAsPdf(html);
//  guardar el pdf resultante en un archivo
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
//  html para convertir en pdf
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";
//  convertir html en pdf
using var pdf = ChromePdfRenderer.RenderHtmlAsPdf(html);
//  guardar el pdf resultante en un archivo
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
'  html para convertir en pdf
Dim html = "<h1>Hello World!</h1><br><p>This is IronPdf.</p>"
'  convertir html en pdf
Dim pdf = ChromePdfRenderer.RenderHtmlAsPdf(html)
'  guardar el pdf resultante en un archivo
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"))
VB   C#

o si desea convertir una página web en un archivo PDF

//  uri de la página a convertir en pdf
var uri = new Uri("http://www.google.com/ncr");
//  convertir página en pdf
pdf = ChromePdfRenderer.RenderUrlAsPdf(uri);
//  guardar el pdf resultante en un archivo
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));
//  uri de la página a convertir en pdf
var uri = new Uri("http://www.google.com/ncr");
//  convertir página en pdf
pdf = ChromePdfRenderer.RenderUrlAsPdf(uri);
//  guardar el pdf resultante en un archivo
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));
'  uri de la página a convertir en pdf
Dim uri As New Uri("http://www.google.com/ncr")
'  convertir página en pdf
pdf = ChromePdfRenderer.RenderUrlAsPdf(uri)
'  guardar el pdf resultante en un archivo
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"))
VB   C#

Y eso es todo.!

Los resultados correspondientes son:

Crear PDF en C# a partir de un archivo HTML, Figura 1: Resultado de la conversión de HTML a PDF

El resultado de convertir HTML en PDF**

Crear PDF en C# a partir de un archivo HTML, Figura 2: Resultado de convertir una página web en PDF

El resultado de convertir una página web en un PDF

El ejemplo de código se encuentra en el proyecto IronPDFDemo.HelloWorld.

Paso 3: RenderHtmlAsPdf

Ejemplo 1

Para evaluar un ejemplo más real, imagine una factura HTML que debe convertirse en PDF. Aquí está el código de cómo hacerlo.

Nota: Puede encontrar la factura html en el proyecto IronPDFDemo.DemoWebSite (~/Static/TestInvoice1.html). Tenga en cuenta que la factura tiene CSS personalizado para el tipo de medio "print".

La factura de origen tiene este aspecto en el navegador:

Crear PDF en C# a partir de un archivo HTML, Figura 4:


Para convertir esto en un archivo PDF, se utilizan códigos similares a los del ejemplo HelloWorld anterior, con la diferencia del archivo HTML de origen.

//  leer html de un archivo
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"));
//  leer html de un archivo
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"));
'  leer html de un archivo
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"))
VB   C#

El resultado es:

Crear PDF en C# a partir de un archivo HTML, Figura 5: Generar un archivo PDF a partir de HTML

Generar un archivo PDF a partir de HTML

Se ve muy bien! El ejemplo de código se encuentra en el proyecto IronPDFDemo.RenderHtmlAdPdfDemo.

Vea también esta pregunta en Cómo utilizar documentos HTML o cadenas con matrices 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, una cabecera con el título del documento, un pie de página con la fecha de creación & números de página y algo de CSS personalizado para el tipo de medio "print" que tiene una factura estándar. Para ello, se inicializa una instancia de ChromePdfRenderOptions y se pasa al constructor ChromePdfRenderer.

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);
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);
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)
VB   C#

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 = pdfRenderingOptions
VB   C#

Nota: El encabezado y el pie de página tienen funciones de fusión, lo que significa que todos los campos de fusión ({página}, {total-páginas}, {url}, {fecha}, {tiempo}, {html-title}, {título pdf}) pueden rellenarse con los datos correspondientes.

El resto del código es el mismo que en el ejemplo 1. El resultado es:

Crear PDF en C# a partir de un archivo HTML, Figura 6: Generar una factura con encabezado y pie de página

Generar una factura con encabezado y pie de página

Los márgenes personalizados, encabezados, pies de página y CSS para el tipo de medio "print" ya están en su sitio. El ejemplo de código se encuentra en el proyecto IronPDFDemo.RenderHtmlAdPdfDemo. Encontrará más configuraciones aquí, en Referencia API IronPDF.

Paso 4: RenderUrlAsPdf

Puesta en marcha

Para ejecutar los ejemplos de esta sección es necesario alojar el IronPDFDemo.DemoWebSite localmente. Para hacerlo en IIS Express:

  1. Ir a DemoWebSite
  2. Haga clic con el botón derecho del ratón > Establecer como proyecto de inicio
  3. Inicio sin depuración (Ctrl+F5)
  4. Navegue hasta su {dirección de base}/Static/TestInvoice1.html para asegurarse de que funciona. Esta es la URL http://localhost:51169/Static/FacturaPrueba1.html (será el mismo para usted si no cambia los ajustes correspondientes del proyecto).

Ejemplo 1

En esta sección, la factura alojada DemoWebSite se convierte en un PDF utilizando el mismo código que en el ejemplo HelloWorld. La diferencia radica en la URL alojada:

var uri = new Uri("http://localhost:51169/Static/TestFactura1.html");
var urlToPdf = new ChromePdfRenderer();
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"));
var uri = new Uri("http://localhost:51169/Static/TestFactura1.html");
var urlToPdf = new ChromePdfRenderer();
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"));
Dim uri As New Uri("http://localhost:51169/Static/TestFactura1.html")
Dim urlToPdf = New ChromePdfRenderer()
Dim pdf = urlToPdf.RenderUrlAsPdf(uri)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"))
VB   C#

El resultado es:

Crear PDF en C# a partir de un archivo HTML, Figura 7: Generar un sitio web alojado en PDF

Generar un sitio web alojado en un PDF

Es genial y tiene el aspecto esperado. Por favor encuentre el ejemplo de código dentro del proyecto IronPDFDemo.RenderUrlAsPdfDemo.

Ejemplo 2

Muchos sitios web suelen estar protegidos por un método de autenticación. Esta sección utiliza un nombre de usuario y una contraseña proporcionados durante el proceso de representación de un archivo PDF con algunas personalizaciones: márgenes personalizados, una cabecera con el título del documento, un pie de página con la fecha de creación y las páginas, y CSS personalizado para el tipo de medio "print". La dirección URL de la factura es http://localhost:51169/Factura.

Acceso a http://localhost:51169/Factura da como resultado el formulario "Autenticación requerida":

Crear PDF en C# a partir de un archivo HTML, Figura 8: Formulario de autenticación obligatoria

**Formulario de autenticación obligatoria

Nota: Las credenciales son "testUser"/"testPassword".

¿Cómo evitar la autenticación? Estableciendo HttpLoginCredentials:

var uri = new Uri("http://localhost:51169/Factura");
var urlToPdf = new ChromePdfRenderer
{
    PrintOptions = new ChromePdfRenderer()
    {
        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
    },
    //  configuración de las credenciales de inicio de sesión para eludir la autenticación básica
    LoginCredentials = new HttpLoginCredentials()
    {
        NetworkUsername = "testUser",
        NetworkPassword = "testPassword"
    }
};
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"));
var uri = new Uri("http://localhost:51169/Factura");
var urlToPdf = new ChromePdfRenderer
{
    PrintOptions = new ChromePdfRenderer()
    {
        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
    },
    //  configuración de las credenciales de inicio de sesión para eludir la autenticación básica
    LoginCredentials = new HttpLoginCredentials()
    {
        NetworkUsername = "testUser",
        NetworkPassword = "testPassword"
    }
};
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"));
Dim uri As New Uri("http://localhost:51169/Factura")
Dim urlToPdf = New ChromePdfRenderer With {
	.PrintOptions = New ChromePdfRenderer() 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"))
VB   C#

Nota: Se utiliza la misma personalización que para el ChromePdfRenderer Example2.

El resultado es:

Crear PDF en C# a partir de un archivo HTML, Figura 9: Generar un sitio HTML con credenciales a un archivo PDF

Generar un sitio HTML con credenciales a un archivo PDF

Todo está en su sitio. Encontrará un ejemplo de código en el proyecto IronPDFDemo.RenderUrlAsPdfDemo. Si te estás preguntando cómo sería el resultado sin HttpLoginCredentials, aquí lo tienes:

Crear PDF en C# a partir de un archivo HTML, Figura 10: Generar un archivo PDF vacío sin credenciales

Generar un archivo PDF vacío sin credenciales

Véase también Jean's Tutorial .NET HTML to PDF

Además, IronPDF también puede interactuar con PDF de diferentes maneras:

< ANTERIOR
Generación de archivos PDF en C#
SIGUIENTE >
Cómo ver archivos PDF en ASP.NET utilizando C# e IronPDF

¿Listo para empezar? Versión: 2024.7 recién publicada

Descarga gratuita de NuGet Descargas totales: 9,974,197 Ver licencias >
123