HTML vers PDF : Python

Chaknith Bin
Chaknith Bin
décembre 28, 2022
Mise à jour décembre 10, 2024
Partager:
This article was translated from English: Does it need improvement?
Translated
View the article in English

Ce guide fournit aux développeurs Python des instructions étape par étape sur l'utilisation de la bibliothèque IronPDF pour convertir du contenu HTML en fichiers PDF (format de document portable) de haute qualité.

IronPDF est une bibliothèque de conversion et de traitement PDF complète qui prend en charge plusieurs langages de programmation, y compris les langages de programmation .NET, Java, et Python. Ce tutoriel se concentre spécifiquement sur l'utilisation d'IronPDF dans des scripts Python pour convertir du contenu HTML, que ce soit sous forme de fichiers ou de balisage.

Pour un tutoriel séparé sur la façon de convertir HTML en PDF dans les applications .NET, veuillez consulter le lien suivant ici.


Vue d'ensemble


Pour commencer

Commencez à utiliser IronPDF dans votre projet dès aujourd'hui avec un essai gratuit.

Première étape :
green arrow pointer

1. Installation de la bibliothèque IronPDF PDF pour Python

Pour installer la bibliothèque IronPDF pour Python, vous pouvez utiliser le gestionnaire de paquets populaire, pip. Il suffit d'exécuter la commande suivante :

 pip install ironpdf

Conseils
Pour installer une version spécifique de IronPdf, veuillez utiliser la syntaxe suivante : "==2023.x.x". Par exemple, vous pouvez exécuter la commande "pip install ironpdf==2023.x.x".

IronPDF Python repose sur la bibliothèque IronPDF .NET, en particulier .NET 6.0, comme technologie sous-jacente. Par conséquent, il est nécessaire d'avoir le SDK .NET 6.0 installé sur votre machine pour utiliser IronPDF Python.


Guide pratique et exemples de code

2. Convertir HTML en PDF

Dans la section suivante, nous allons nous pencher sur les impressionnantes capacités de rendu d'IronPDF pour la conversion de HTML en PDF.

Le composant principal pour le rendu de documents PDF est la classe ChromePdfRenderer. De plus, la classe PdfDocument offre une gamme de fonctionnalités de manipulation. IronPDF offre des méthodes fiables pour convertir le contenu HTML en documents PDF, répondant à trois scénarios clés :

  • Convertir les chaînes de caractères HTML/marques en PDF
  • Convertir des fichiers HTML/zips en PDF
  • Convertir des URL en PDF

    Cette section fournit un aperçu concis de chaque cas d'utilisation, accompagné de ressources supplémentaires pour plus de détails.

2.1 Importer le paquetage IronPDF

Pour importer IronPDF, incluez les instructions d'importation suivantes au début des fichiers source où IronPDF sera utilisé :

# Import statements for IronPDF Python
from ironpdf import *
PYTHON

2.2. Définir la clé de licence (facultatif)

IronPDF for Python est gratuit, mais il ajoute un filigrane en arrière-plan aux PDF pour les utilisateurs gratuits.

Visitez la page d'octroi de licences pour obtenir votre clé de licence et profiter de PDF sans filigrane.

Pour générer des PDF sans filigrane à l'aide d'IronPDF, il est nécessaire de fournir une clé de licence valide à la bibliothèque. L'extrait de code suivant montre comment configurer la bibliothèque avec une clé de licence :

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

Assurez-vous que la clé de licence est définie avant de générer des fichiers PDF ou de modifier leur contenu. Il est recommandé d'appeler la méthode LicenseKey avant toute autre ligne de code.

Vous pouvez acheter une clé de licence sur notre page de licences ou nous contacter pour obtenir une clé de licence d'essai gratuite.

2.3 Définir l'emplacement du fichier journal (facultatif)

IronPDF peut générer des messages de journal dans un fichier texte nommé Default.log dans le même répertoire que votre script Python.

Si vous souhaitez personnaliser le nom et l'emplacement du fichier journal, vous pouvez définir la propriété LogFilePath à l'aide de l'extrait de code ci-dessous :

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

[{i:(Logger.LogFilePath doit être appelé avant d'utiliser toute méthode de conversion et de manipulation de PDF.

2.4. Création d'un PDF à partir d'une chaîne HTML

La méthode RenderHtmlAsPdf convertit une chaîne HTML en un document au format PDF.

L'extrait de code ci-dessous montre comment générer un fichier PDF à partir d'une chaîne HTML comportant un seul élément de titre :

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. Création d'un PDF à partir d'une chaîne HTML

Convertir le balisage HTML en fichier PDF en utilisant la méthode RenderHtmlAsPdf. Cette méthode peut générer des PDF en utilisant tous les balisages HTML et CSS conformes aux normes W3C.

La méthode RenderHtmlAsPdf traite le HTML, le CSS et le JavaScript de la même manière que les navigateurs modernes, garantissant un rendu précis du contenu. Cette fonction permet aux ingénieurs logiciels de créer des PDF qui ressemblent beaucoup à leurs équivalents dans le navigateur web.

De plus, la méthode RenderHtmlAsPdf peut gérer des ressources externes telles que des images, des feuilles de style et des scripts situés dans des dossiers locaux ou sur le réseau. L'exemple suivant démontre la création d'un document PDF à partir de HTML qui référence un fichier CSS et une image stockée dans un dossier 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

Le résultat du code ci-dessus est illustré dans l'image ci-dessous.

Html To Pdf Html String To Pdf related to 2.4. Création d'un PDF à partir d'une chaîne HTML

La méthode RenderHtmlAsPdf est capable de rendre divers types de contenu HTML. Si cela peut être affiché dans Chrome, alors RenderHtmlAsPdf le rendra !

De plus, les développeurs ont la possibilité de fournir un deuxième argument à la méthode RenderHtmlAsPdf, leur permettant de spécifier un chemin de base pour référencer les ressources web. Ce chemin peut pointer vers un répertoire local du système de fichiers ou même vers un chemin URL.

Pour mieux comprendre comment utiliser la méthode RenderHtmlAsPdf, vous pouvez vous référer à cet exemple de code ou consulter les pages de référence de l'API pour des informations plus détaillées.

2.5. Créer un PDF à partir d'une URL

Pour convertir une URL de site web en documents PDF, les développeurs peuvent utiliser la méthode RenderUrlAsPdf fournie par IronPDF.

Voici un exemple qui illustre la transformation d'un article de Wikipedia en contenu 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

Le format du fichier PDF généré est indiqué ci-dessous.

Html To Pdf 7 related to 2.5. Créer un PDF à partir d'une URL

Pour plus d'informations, vous pouvez vous référer à cet exemple de code démontrant comment convertir une page web en PDF.

2.6. Création d'un PDF à partir d'un fichier HTML

IronPDF permet de convertir des fichiers HTML en PDF et de les stocker sur un système de fichiers local. Il rend directement le contenu HTML dans son format PDF équivalent.

Pour une démonstration concrète de cette fonctionnalité, l'exemple de code suivant présente la conversion d'un fichier HTML de facture. Vous pouvez accéder au balisage HTML de la [facture](https://codepen.io/tjoen/pen/wvgvLX" target="_blank" rel="nofollow noopener noreferrer).

Ce balisage HTML est fourni pour votre commodité :

<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

Supposons que nous ayons un fichier HTML local ainsi que ses fichiers CSS et JavaScript associés enregistrés dans un dossier nommé "factures". Nous pouvons utiliser IronPDF pour convertir l'exemple de fichier HTML en PDF à l'aide du code Python suivant :

# 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

Comme pour la conversion de chaînes HTML en PDF, IronPDF résout automatiquement les URL relatives dans l'exemple de fichier HTML, ce qui garantit que les feuilles de style et les scripts référencés sont correctement appliqués au document PDF résultant. Cela permet de s'assurer que l'aspect visuel de la page web est fidèlement reproduit dans le fichier PDF.

3. Pour en savoir plus

Explorez les capacités étendues du rendu HTML en PDF d'IronPDF en consultant notre section Exemples de Code.

  1. Lisez cet exemple de code pour découvrir comment personnaliser l'apparence des documents PDF pendant le processus de conversion.

  2. Apprenez à générer des fichiers PDF avec des en-têtes et pieds de page personnalisés, à ajuster les tailles des marges et les dimensions des pages, à ajouter des filigranes, et bien plus.

  3. De plus, explorez les techniques pour extraire du texte, optimiser la taille des fichiers, et imprimer des PDFs par programmation.