HTML a PDF: Python

Chaknith Bin
Chaknith Bin
28 de diciembre, 2022
Actualizado 10 de diciembre, 2024
Compartir:
This article was translated from English: Does it need improvement?
Translated
View the article in English

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

IronPDF es una biblioteca integral de conversión y procesamiento de PDF que admite múltiples lenguajes de programación, incluidos .NET, Java y Python. 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.

Para un tutorial separado sobre cómo convertir HTML a PDF en aplicaciones .NET, por favor consulte el siguiente aquí.


Visión general


Primeros pasos

Comience a usar IronPDF en su proyecto hoy con una prueba gratuita.

Primer Paso:
green arrow pointer

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

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

 pip install ironpdf

Consejos
Para instalar una versión específica de IronPdf, por favor use la siguiente sintaxis: "==2023.x.x". Por ejemplo, puedes ejecutar el comando "pip install ironpdf==2023.x.x".

IronPDF Python se basa en la biblioteca IronPDF .NET, específicamente .NET 6.0, como su tecnología subyacente. Por lo tanto, es necesario tener instalado el .NET 6.0 SDK en su máquina para poder usar 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 el renderizado de documentos PDF es la clase ChromePdfRenderer. Además, la clase PdfDocument ofrece una variedad de características de manipulación. IronPDF proporciona métodos fiables para convertir contenido 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 Python es de uso gratuito, pero añade una marca de agua de fondo en mosaico a los PDF para los usuarios gratuitos.

Visite la 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 desde nuestra página de licencias o contactarnos 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 tu script de Python.

Si deseas personalizar el nombre y la ubicación del archivo de registro, puedes establecer la propiedad LogFilePath utilizando el fragmento de código a continuación:

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

[{i:(Debe llamarse 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 en 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
Html To Pdf 5 related to 2.4. Crear un PDF a partir de una cadena HTML

Convierte el marcado HTML en un archivo PDF utilizando el método RenderHtmlAsPdf. Este método puede generar PDFs utilizando todo el marcado HTML y CSS válido y compatible con W3C.

El método RenderHtmlAsPdf procesa HTML, CSS y JavaScript de la misma manera que lo hacen los navegadores modernos, asegurando un renderizado preciso 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 demuestra la creación de un documento PDF a partir de HTML que hace referencia a un archivo CSS y a una imagen almacenados 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.

Html To Pdf Html String To Pdf related to 2.4. Crear un PDF a partir de una cadena HTML

El método RenderHtmlAsPdf es capaz de renderizar varios tipos de contenido HTML. ¡Si puede mostrarse en Chrome, entonces RenderHtmlAsPdf lo renderizará!

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 obtener una mejor comprensión de cómo usar el método RenderHtmlAsPdf, puedes consultar este ejemplo de código o revisar 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 una URL de sitio web en documentos PDF, los desarrolladores pueden utilizar el método RenderUrlAsPdf provisto 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://en.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.

Html To Pdf 7 related to 2.5. Crear un PDF a partir de una URL

Para obtener más información, puede consultar el ejemplo de código que demuestra 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 en el mundo 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 de la [factura](https://codepen.io/tjoen/pen/wvgvLX" target="_blank" rel="nofollow noopener noreferrer).

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 renderizado de HTML a PDF de IronPDF explorando nuestra sección de Ejemplos de Código.

  1. Lea este ejemplo de código para descubrir cómo personalizar la apariencia de los documentos PDF durante el proceso de conversión.

  2. Aprenda a generar archivos PDF con encabezados y pies de página personalizados, ajustar los tamaños de los márgenes y las dimensiones de las páginas, añadir marcas de agua, y más.

  3. Además, explore técnicas para extraer texto, optimizar tamaños de archivos e imprimir PDFs programáticamente.