HTML a PDF: Python

Esta guía proporciona a los desarrolladores de Python instrucciones paso a paso sobre la utilización de la biblioteca IronPDF para convertir contenido HTML en formato PDF de alta calidad. (formato de documento portátil) archivos.

IronPDF es una completa biblioteca de conversión y procesamiento de PDF compatible con varios lenguajes de programación, entre ellos .NET, Javay Python lenguajes de programación. Este tutorial se centra específicamente en el uso de IronPDF en scripts Python para convertir contenido HTML, ya sea en forma de archivos o de marcado.

Si desea consultar otro tutorial sobre cómo convertir HTML a PDF en aplicaciones .NET, consulte lo siguiente aquí.


Visión general


Primeros pasos

1. Instalación de la biblioteca PDF IronPDF for .NET

Biblioteca Python para PDF

Instalar con pip

 pip install ironpdf
o
Módulo Python

Descargar Módulo

Descargar ahora

Instalar manualmente en su proyecto

Para instalar la biblioteca IronPDF for .NET, puede utilizar el popular gestor de paquetes, pip. Simplemente ejecute el siguiente comando:

 pip install ironpdf

Consejo
Para instalar una versión específica de IronPdf, utilice la siguiente sintaxis: "==2023.x.x". Por ejemplo, puede ejecutar el comando "pip install ironpdf==2023.x.x".

Tenga en cuenta
IronPDF Python se basa en la biblioteca IronPDF .NET, concretamente en .NET 6.0, como tecnología subyacente. Por lo tanto, es necesario .NET 6.0 SDK instalado en su máquina para poder utilizar IronPDF Python.


Guía práctica y ejemplos de código

2. Convertir HTML a PDF

En la siguiente sección, profundizaremos en las impresionantes capacidades de renderizado de IronPDF para convertir HTML a PDF.

El componente principal para la representación de documentos PDF es la clase ChromePdfRenderer. Además, la clase PdfDocument ofrece una serie de funciones de manipulación. IronPDF proporciona métodos fiables para convertir contenidos HTML en documentos PDF, atendiendo a tres escenarios clave:

  • Convertir cadenas/marcas HTML a PDF
  • Convertir archivos HTML/zips a PDF
  • Convertir URL en PDF

    En esta sección se ofrece una descripción concisa de cada caso de uso, acompañada de recursos complementarios para más detalles.

2.1 Importar el paquete IronPDF

Para importar IronPDF, incluya las siguientes sentencias de importación al principio de los archivos fuente en los que se utilizará IronPDF:

# Import statements for IronPDF Python
from ironpdf import *
PYTHON

2.2. Configurar la clave de licencia (opcional)

IronPDF for .NET es de uso gratuito, pero añade una marca de agua de fondo en mosaico a los PDF para los usuarios gratuitos.

Visite página de licencias para obtener su clave de licencia y disfrutar de PDF sin marcas de agua.

Para generar PDF sin marcas de agua utilizando IronPDF, es necesario proporcionar una clave de licencia válida a la biblioteca. El siguiente fragmento de código muestra cómo configurar la biblioteca con una clave de licencia:

# Apply your license key
License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
PYTHON

Asegúrese de que la clave de licencia está configurada antes de generar archivos PDF o modificar su contenido. Se recomienda llamar al método LicenseKey antes de cualquier otra línea de código.

Puede comprar una clave de licencia de nuestra página de licencias o póngase en contacto con nosotros para obtener una clave de licencia de prueba gratuita.

2.3 Establecer la ubicación del archivo de registro (opcional)

IronPDF puede generar mensajes de registro en un archivo de texto llamado Default.log en el mismo directorio que su script Python.

Si desea personalizar el nombre y la ubicación del archivo de registro, puede establecer la propiedad LogFilePath utilizando el siguiente fragmento de código:

# Set a log path
Logger.EnableDebugging = True
Logger.LogFilePath = "Custom.log"
Logger.LoggingMode = Logger.LoggingModes.All
PYTHON

Tenga en cuenta
Se debe llamar a Logger.LogFilePath antes de utilizar cualquier método de conversión y manipulación de PDF.

2.4. Crear un PDF a partir de una cadena HTML

El método RenderHtmlAsPdf convierte una cadena HTML en un documento con formato PDF.

El siguiente fragmento de código muestra cómo generar un archivo PDF a partir de una cadena HTML con un único elemento de encabezado:

from ironpdf import *

# Instantiate Renderer
renderer = ChromePdfRenderer()

# Create a PDF from a HTML string using Python
pdf = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF!</h1>")

# Export to a file or Stream
pdf.SaveAs("output.pdf")
PYTHON

Convertir marcas HTML en archivos PDF mediante la función RenderHtmlAsPdf método. Este método puede generar PDF utilizando todas las marcas HTML y CSS válidas conformes con el W3C.

El método RenderHtmlAsPdf procesa HTML, CSS y JavaScript del mismo modo que lo hacen los navegadores modernos, lo que garantiza una representación precisa del contenido. Esta función permite a los ingenieros de software crear archivos PDF muy parecidos a los de los navegadores web.

Además, el método RenderHtmlAsPdf puede manejar recursos externos como imágenes, hojas de estilo y scripts ubicados en carpetas locales o de red. El siguiente ejemplo muestra la creación de un documento PDF a partir de HTML que hace referencia a un archivo CSS y a una imagen almacenada en una carpeta assets:

from ironpdf import *

html = """
<html>
   <head>
      <title>Hello world!</title>
      <link rel='stylesheet' href='assets/style.css'>
   </head>
   <body>
      <h1>Hello from IronPDF!</h1>
      <a href='https://ironpdf.com/python/'><img src='assets/logo.png' /></a>
   </body>
</html>
"""

renderer = ChromePdfRenderer()
pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
PYTHON

El resultado del código anterior se muestra en la siguiente imagen.

RenderHtmlAsPdf es capaz de mostrar varios tipos de contenido HTML. Si se puede mostrar en Chrome, entonces RenderHtmlAsPdf ¡lo rendirá!

Además, los desarrolladores tienen la opción de proporcionar un segundo argumento al método RenderHtmlAsPdf, lo que les permite especificar una ruta base para referenciar activos web. Esta ruta puede apuntar a un directorio local del sistema de archivos o incluso a una ruta URL.

Para comprender mejor cómo utilizar el método RenderHtmlAsPdf, puede consultar este ejemplo de código o consulte las páginas de referencia de la API para obtener información más detallada.

2.5. Crear un PDF a partir de una URL

Para convertir URL de sitios web en documentos PDF, los desarrolladores pueden utilizar el método RenderUrlAsPdf proporcionado por IronPDF.

He aquí un ejemplo que muestra cómo convertir un artículo de Wikipedia en contenido PDF.

from ironpdf import *

# Instantiate Renderer
renderer = ChromePdfRenderer()

# Create a PDF from a URL or local file path
pdf = renderer.RenderUrlAsPdf("https://es.wikipedia.org/wiki/PDF")

# Export to a file or Stream
pdf.SaveAs("url.pdf")
PYTHON

A continuación se muestra el formato de archivo PDF generado.

Para más información, consulte ejemplo de código que muestra cómo convertir una página web en PDF.

2.6. Creación de un PDF a partir de un archivo HTML

IronPDF permite convertir archivos HTML a PDF y almacenarlos en un sistema de archivos local. Convierte directamente el contenido HTML en su equivalente en formato PDF.

Para una demostración real de esta funcionalidad, el siguiente ejemplo de código muestra la conversión de un archivo HTML de factura. Puede acceder al marcado HTML del archivo factura.

Este marcado HTML se proporciona para su comodidad:

<html>
<head>
    <meta charset="utf-8">
    <title>Invoice</title>
    <link rel="stylesheet" href="style.css">
    <link rel="license" href="https://www.opensource.org/licenses/mit-license/">
    <script src="script.js"></script>
</head>
<body>
<header>
    <h1>Invoice</h1>
    <address contenteditable>
        <p>Jonathan Neal</p>
        <p>101 E. Chapman Ave<br>Orange, CA 92866</p>
        <p>(800) 555-1234</p>
    </address>
    <span><img alt="" src="http://www.jonathantneal.com/examples/invoice/logo.png"><input type="file" accept="image/*"></span>
</header>
<article>
    <h1>Recipient</h1>
    <address contenteditable>
        <p>Some Company<br>c/o Some Guy</p>
    </address>
    <table class="meta">
        <tr>
            <th><span contenteditable>Invoice #</span></th>
            <td><span contenteditable>101138</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Date</span></th>
            <td><span contenteditable>January 1, 2012</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Amount Due</span></th>
            <td><span id="prefix" contenteditable>$</span><span>600.00</span></td>
        </tr>
    </table>
    <table class="inventory">
        <thead>
        <tr>
            <th><span contenteditable>Item</span></th>
            <th><span contenteditable>Description</span></th>
            <th><span contenteditable>Rate</span></th>
            <th><span contenteditable>Quantity</span></th>
            <th><span contenteditable>Price</span></th>
        </tr>
        </thead>
        <tbody>
        <tr>
            <td><a class="cut">-</a><span contenteditable>Front End Consultation</span></td>
            <td><span contenteditable>Experience Review</span></td>
            <td><span data-prefix>$</span><span contenteditable>150.00</span></td>
            <td><span contenteditable>4</span></td>
            <td><span data-prefix>$</span><span>600.00</span></td>
        </tr>
        </tbody>
    </table>
    <a class="add">+</a>
    <table class="balance">
        <tr>
            <th><span contenteditable>Total</span></th>
            <td><span data-prefix>$</span><span>600.00</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Amount Paid</span></th>
            <td><span data-prefix>$</span><span contenteditable>0.00</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Balance Due</span></th>
            <td><span data-prefix>$</span><span>600.00</span></td>
        </tr>
    </table>
</article>
<aside>
    <h1><span contenteditable>Additional Notes</span></h1>
    <div contenteditable>
        <p>A finance charge of 1.5% will be made on unpaid balances after 30 days.</p>
    </div>
</aside>
</body>
</html>
<html>
<head>
    <meta charset="utf-8">
    <title>Invoice</title>
    <link rel="stylesheet" href="style.css">
    <link rel="license" href="https://www.opensource.org/licenses/mit-license/">
    <script src="script.js"></script>
</head>
<body>
<header>
    <h1>Invoice</h1>
    <address contenteditable>
        <p>Jonathan Neal</p>
        <p>101 E. Chapman Ave<br>Orange, CA 92866</p>
        <p>(800) 555-1234</p>
    </address>
    <span><img alt="" src="http://www.jonathantneal.com/examples/invoice/logo.png"><input type="file" accept="image/*"></span>
</header>
<article>
    <h1>Recipient</h1>
    <address contenteditable>
        <p>Some Company<br>c/o Some Guy</p>
    </address>
    <table class="meta">
        <tr>
            <th><span contenteditable>Invoice #</span></th>
            <td><span contenteditable>101138</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Date</span></th>
            <td><span contenteditable>January 1, 2012</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Amount Due</span></th>
            <td><span id="prefix" contenteditable>$</span><span>600.00</span></td>
        </tr>
    </table>
    <table class="inventory">
        <thead>
        <tr>
            <th><span contenteditable>Item</span></th>
            <th><span contenteditable>Description</span></th>
            <th><span contenteditable>Rate</span></th>
            <th><span contenteditable>Quantity</span></th>
            <th><span contenteditable>Price</span></th>
        </tr>
        </thead>
        <tbody>
        <tr>
            <td><a class="cut">-</a><span contenteditable>Front End Consultation</span></td>
            <td><span contenteditable>Experience Review</span></td>
            <td><span data-prefix>$</span><span contenteditable>150.00</span></td>
            <td><span contenteditable>4</span></td>
            <td><span data-prefix>$</span><span>600.00</span></td>
        </tr>
        </tbody>
    </table>
    <a class="add">+</a>
    <table class="balance">
        <tr>
            <th><span contenteditable>Total</span></th>
            <td><span data-prefix>$</span><span>600.00</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Amount Paid</span></th>
            <td><span data-prefix>$</span><span contenteditable>0.00</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Balance Due</span></th>
            <td><span data-prefix>$</span><span>600.00</span></td>
        </tr>
    </table>
</article>
<aside>
    <h1><span contenteditable>Additional Notes</span></h1>
    <div contenteditable>
        <p>A finance charge of 1.5% will be made on unpaid balances after 30 days.</p>
    </div>
</aside>
</body>
</html>
HTML

Supongamos que tenemos un archivo HTML local junto con sus archivos CSS y JavaScript asociados guardados en una carpeta llamada "facturas", podemos utilizar IronPDF para convertir el archivo HTML de muestra a PDF con el siguiente código Python:

# Instantiate Renderer
renderer = ChromePdfRenderer()

# Create a PDF from an existing HTML file using Python
pdf = renderer.RenderHtmlFileAsPdf("invoices/TestInvoice1.html")

# Export to a file or Stream
pdf.SaveAs("htmlfile_to_pdf.pdf")
PYTHON

De forma similar a la conversión de cadenas HTML a PDF, IronPDF resuelve automáticamente las URL relativas en el archivo HTML de muestra, garantizando que cualquier hoja de estilo y secuencia de comandos a los que se haga referencia se aplique correctamente al documento PDF resultante. Esto garantiza que el aspecto visual de la página web se captura con precisión en el archivo PDF.

3. Lecturas complementarias

Explore las amplias capacidades de conversión de HTML a PDF de IronPDF adentrándose en nuestro Ejemplos de códigos sección.

  1. Leer este ejemplo de código para descubrir cómo personalizar el aspecto de los documentos PDF durante el proceso de conversión.
  2. Aprenda a generar archivos PDF personalizados encabezados y pies de páginaAjustar tamaños de margen y dimensiones de la página, añadir marcas de aguay mucho más.
  3. Además, explorará técnicas para text extraction, optimizar el tamaño de los archivosy programáticamente imprimir PDF.