USO DE IRONPDF

Crear PDF en C# a partir de un archivo HTML

Actualizado 20 de enero, 2024
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 serdescargar y visualizar como PDF Ejemplo.

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

El siguiente tutorial le guiará a través del proceso de uso de IronPDF como unGenerador de PDF en 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. Solicitar demostraciones de casos de uso adicionales de Iron Software.

La demo consiste en Hello World,RenderHtmlAsPdf yRenderUrlAsPdf 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 Paquete NuGet IronPDF.

También puede utilizar el Descarga directa de 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();  // new instance of ChromePdfRenderer
var ChromePdfRenderer = new ChromePdfRenderer();  // new instance of ChromePdfRenderer
Dim ChromePdfRenderer As New ChromePdfRenderer() ' new instance of ChromePdfRenderer
VB   C#

entonces si necesitas convertir HTML en PDF

// html to turn into pdf
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";
// turn html to pdf
using var pdf = ChromePdfRenderer.RenderHtmlAsPdf(html);
// save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
// html to turn into pdf
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";
// turn html to pdf
using var pdf = ChromePdfRenderer.RenderHtmlAsPdf(html);
// save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
' html to turn into pdf
Dim html = "<h1>Hello World!</h1><br><p>This is IronPdf.</p>"
' turn html to pdf
Dim pdf = ChromePdfRenderer.RenderHtmlAsPdf(html)
' save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"))
VB   C#

o si desea 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");
// turn page into pdf
pdf = ChromePdfRenderer.RenderUrlAsPdf(uri);
// save resulting pdf into 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");
// turn page into pdf
pdf = ChromePdfRenderer.RenderUrlAsPdf(uri);
// save resulting pdf into 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")
' turn page into pdf
pdf = ChromePdfRenderer.RenderUrlAsPdf(uri)
' save resulting pdf into file
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.

// 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"))
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 enCó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 y los 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 información enReferencia 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/TestInvoice1.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/TestInvoice1.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/TestInvoice1.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/TestInvoice1.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/Invoice");
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
    },
    // setting 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"));
var uri = new Uri("http://localhost:51169/Invoice");
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
    },
    // setting 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"));
Dim uri As New Uri("http://localhost:51169/Invoice")
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'sTutorial .NET HTML to PDF

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

*Extraer imágenes y texto de PDF mediante OCR

*Edita el contenido HTML de la web que has convertido

< 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.12 acaba de salir

Descarga gratuita de NuGet Descargas totales: 11,622,374 Ver licencias >