Passer au contenu du pied de page
OUTILS PDF PYTHON

Comment créer un fichier PDF en Python

Le PDF (Portable Document Format) est le format de fichier numérique le plus populaire pour envoyer et recevoir des données en ligne. Il est principalement utilisé pour préserver la mise en forme des données et sécuriser les données avec un mot de passe chiffré. L'extension .pdf est indépendante des applications logicielles, du matériel, ou des systèmes d'exploitation.

Dans cet article, nous allons créer un fichier PDF dans le langage de programmation Python. Il existe de nombreuses options en ligne disponibles, mais ici nous utiliserons une bibliothèque Python pour créer des fichiers PDF. Voici les deux bibliothèques célèbres pour générer des documents PDF avec une ou plusieurs pages en Python :

  1. Reportlab
  2. PDFKit

Parmi les bibliothèques PDF python mentionnées ci-dessus, nous pouvons utiliser n'importe laquelle pour générer des PDF.

Comment Créer un Fichier PDF en Python ?

Jetons un œil aux deux bibliothèques une par une.

Créer des Fichiers PDF en utilisant la bibliothèque Reportlab

La bibliothèque Reportlab est un kit d'outils PDF open-source gratuit qui peut être utilisé pour créer facilement des fichiers PDF. Elle fournit un ensemble d'outils de dessin pour ajouter des images et du texte à une certaine position sur plusieurs pages. Vous pouvez également créer des fichiers PDF cryptés en utilisant la méthode encryptCanvas.

Installation

Pour installer Reportlab, le gestionnaire de paquets pip est requis. Il télécharge automatiquement et installe le paquet demandé en utilisant la commande pip. Tapez simplement la commande suivante dans l'invite de commande Windows ou PowerShell :

pip install reportlab
pip install reportlab
SHELL

Remarque : Lors de l'installation de Python, il doit être ajouté à la variable d'environnement du chemin pour exécuter la commande ci-dessus de n'importe où dans cmd ou PowerShell. Pip est recommandé pour être utilisé pour Python 3+, car c'est la version mise à jour.

Ouvrir un Nouveau Fichier Python

Pour utiliser la bibliothèque Reportlab, nous devons écrire le code dans un fichier Python et l'exécuter pour créer des fichiers PDF.

  1. Recherchez et ouvrez l'interpréteur IDLE par défaut de Python à partir de la barre de recherche Windows et appuyez sur Ctrl + N ou sélectionnez "Nouveau Fichier" dans l'onglet Fichier. Cela ouvrira l'éditeur de texte pour écrire le code.
  2. Ensuite, enregistrez le fichier avec le nom approprié. Je vais le nommer "createpdf.py".

Code Python pour Créer un PDF

Le code suivant dessinera des éléments de document et générera un PDF en quelques secondes:

# Importing required modules from ReportLab
from reportlab.pdfgen import canvas
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase import pdfmetrics
from reportlab.lib import colors

# File and document attributes
fileName = 'sample.pdf'
documentTitle = 'sample'
title = 'Create PDF'
subTitle = 'Using ReportLab !!'

# Creating a PDF object
pdf = canvas.Canvas(fileName)

# Setting the title of the document
pdf.setTitle(documentTitle)

# Registering a TrueType font
pdfmetrics.registerFont(TTFont('abc', 'Arial.ttf'))

# Creating the title by setting its font and placing it on the canvas
pdf.setFont('abc', 36)
pdf.drawCentredString(300, 770, title)

# Creating the subtitle by setting its font, color, and placing it on the canvas
pdf.setFillColorRGB(0, 0, 255)  # Set color to blue
pdf.setFont("Courier-Bold", 24)
pdf.drawCentredString(290, 720, subTitle)

# Saving the PDF
pdf.save()
# Importing required modules from ReportLab
from reportlab.pdfgen import canvas
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase import pdfmetrics
from reportlab.lib import colors

# File and document attributes
fileName = 'sample.pdf'
documentTitle = 'sample'
title = 'Create PDF'
subTitle = 'Using ReportLab !!'

# Creating a PDF object
pdf = canvas.Canvas(fileName)

# Setting the title of the document
pdf.setTitle(documentTitle)

# Registering a TrueType font
pdfmetrics.registerFont(TTFont('abc', 'Arial.ttf'))

# Creating the title by setting its font and placing it on the canvas
pdf.setFont('abc', 36)
pdf.drawCentredString(300, 770, title)

# Creating the subtitle by setting its font, color, and placing it on the canvas
pdf.setFillColorRGB(0, 0, 255)  # Set color to blue
pdf.setFont("Courier-Bold", 24)
pdf.drawCentredString(290, 720, subTitle)

# Saving the PDF
pdf.save()
PYTHON

Explication du Code

Après avoir importé tous les modules et paquets, nous avons d'abord initialisé tout le contenu qui sera écrit dans un fichier PDF.

fileName = 'sample.pdf'
documentTitle = 'sample'
title = 'Create PDF'
subTitle = 'Using ReportLab !!'
fileName = 'sample.pdf'
documentTitle = 'sample'
title = 'Create PDF'
subTitle = 'Using ReportLab !!'
PYTHON

Maintenant, nous créons le canevas PDF, définissons le titre du document, puis ajoutons un titre et un sous-titre centrés sur le canevas avec les fontes et tailles appropriées.

# Creating a PDF object
pdf = canvas.Canvas(fileName)

# Setting the title of the document
pdf.setTitle(documentTitle)

# Registering a TrueType font
pdfmetrics.registerFont(TTFont('abc', 'Arial.ttf'))

# Creating the title by setting its font and placing it on the canvas
pdf.setFont('abc', 36)
pdf.drawCentredString(300, 770, title)

# Creating the subtitle by setting its font, color, and placing it on the canvas
pdf.setFillColorRGB(0, 0, 255)  # Set color to blue
pdf.setFont("Courier-Bold", 24)
pdf.drawCentredString(290, 720, subTitle)
# Creating a PDF object
pdf = canvas.Canvas(fileName)

# Setting the title of the document
pdf.setTitle(documentTitle)

# Registering a TrueType font
pdfmetrics.registerFont(TTFont('abc', 'Arial.ttf'))

# Creating the title by setting its font and placing it on the canvas
pdf.setFont('abc', 36)
pdf.drawCentredString(300, 770, title)

# Creating the subtitle by setting its font, color, and placing it on the canvas
pdf.setFillColorRGB(0, 0, 255)  # Set color to blue
pdf.setFont("Courier-Bold", 24)
pdf.drawCentredString(290, 720, subTitle)
PYTHON

Enfin, nous sauvegardons le fichier PDF lorsque tout est dessiné sur le canevas.

# Saving the PDF
pdf.save()
# Saving the PDF
pdf.save()
PYTHON

Nous pouvons également utiliser les méthodes drawString et drawText pour créer un fichier PDF simple en utilisant Reportlab en Python.

Créer des Fichiers PDF en utilisant la Bibliothèque PDFKit

La bibliothèque PDFKit est l'une des meilleures approches pour créer des fichiers PDF en Python. Elle peut créer des fichiers PDF en utilisant du code HTML. Vous pouvez rendre des fichiers HTML simples et complexes ou du HTML à partir d'URLs en une page PDF imprimable fidèle au pixel. Cependant, PDFKit intègre les fonctionnalités de wkhtmltopdf pour convertir HTML en PDF. Pour installer wkhtmltopdf pour Windows, Linux, et Mac, visitez ce lien.

Remarque : Dans le système d'exploitation Windows, wkhtmltopdf sera installé dans les fichiers de programme.

Installation

Utilisez la commande suivante pour installer PDFKit:

pip install pdfkit
pip install pdfkit
SHELL

Créer des Fichiers PDF à partir d'une URL

Créer des fichiers PDF en utilisant PDFKit est très simple et se fait en une ligne de commande.

import pdfkit

# Convert a webpage from a URL to a PDF file
pdfkit.from_url('http://google.com', 'out.pdf')
import pdfkit

# Convert a webpage from a URL to a PDF file
pdfkit.from_url('http://google.com', 'out.pdf')
PYTHON

Créer des Fichiers PDF à partir de Fichiers HTML

import pdfkit

# Convert an HTML file to a PDF file
pdfkit.from_file('index.html', 'out.pdf')
import pdfkit

# Convert an HTML file to a PDF file
pdfkit.from_file('index.html', 'out.pdf')
PYTHON

Créer des Fichiers PDF à partir de Modèles HTML

Vous pouvez passer des modèles HTML en tant que chaîne pour les convertir en un PDF en tant que fichier de sortie.

import pdfkit

# HTML content to convert to PDF
html_string = """
    <html>
        <head>
        <meta name="pdfkit-page-size" content="Legal"/>
        <meta name="pdfkit-orientation" content="Landscape"/>
        </head>
        <body>Hello World!</body>
    </html>
    """

# Convert HTML string to a PDF file
pdfkit.from_string(html_string, 'out.pdf')
import pdfkit

# HTML content to convert to PDF
html_string = """
    <html>
        <head>
        <meta name="pdfkit-page-size" content="Legal"/>
        <meta name="pdfkit-orientation" content="Landscape"/>
        </head>
        <body>Hello World!</body>
    </html>
    """

# Convert HTML string to a PDF file
pdfkit.from_string(html_string, 'out.pdf')
PYTHON

PDFKit vous permet de créer facilement des PDFs en Python en utilisant des modèles HTML.

La bibliothèque IronPDF

IronPDF is a useful tool to créer des fichiers PDF dans des projets .NET. Une utilisation courante de cette bibliothèque est le rendu "HTML en PDF", où HTML est utilisé comme langage de conception pour le rendu d'un document PDF.

IronPDF utilise un moteur Chromium .NET pour afficher les pages HTML en fichiers PDF. Avec la conversion de HTML en PDF, il n'y a pas besoin d'utiliser des API complexes pour positionner ou concevoir des PDFs. IronPDF prend également en charge toutes les technologies de pages web standard : HTML, ASPX, JS, CSS, et images.

Il vous permet également de créer une bibliothèque PDF .NET en utilisant HTML5, CSS, JavaScript, et des images. Vous pouvez éditer, tamponner, et ajouter des en-têtes et pieds de page à un PDF sans effort. De plus, il facilite grandement la lecture du texte PDF et l'extraction d'images.

Pour commencer avec IronPDF, vous devez installer le paquet NuGet (assurez-vous que cette étape est authentifiée ou exécutée dans un environnement de développement .NET) :

pip install ironpdf

L'exemple suivant vous aide à créer un PDF directement à partir d'une URL :

from ironpdf import ChromePdfRenderer

# Instantiate Renderer
renderer = ChromePdfRenderer()

# Create a PDF from a URL
pdf = renderer.RenderUrlAsPdf("https://ironpdf.com/")

# Export to a file
pdf.SaveAs("url.pdf")
from ironpdf import ChromePdfRenderer

# Instantiate Renderer
renderer = ChromePdfRenderer()

# Create a PDF from a URL
pdf = renderer.RenderUrlAsPdf("https://ironpdf.com/")

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

Le code suivant vous aidera à créer un fichier PDF à partir de code HTML avec tout CSS ou JavaScript :

from ironpdf import ChromePdfRenderer

# Instantiate Renderer
renderer = ChromePdfRenderer()

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

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

# Advanced Example with HTML Assets
# Load external HTML assets: Images, CSS, and JavaScript.
# An optional BasePath is set as the file location to load assets from
myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", base_path=r"C:\site\assets")
myAdvancedPdf.SaveAs("html-with-assets.pdf")
from ironpdf import ChromePdfRenderer

# Instantiate Renderer
renderer = ChromePdfRenderer()

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

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

# Advanced Example with HTML Assets
# Load external HTML assets: Images, CSS, and JavaScript.
# An optional BasePath is set as the file location to load assets from
myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", base_path=r"C:\site\assets")
myAdvancedPdf.SaveAs("html-with-assets.pdf")
PYTHON

Vous pouvez voir à partir du code ci-dessus que c'est assez simple et clair. Très peu de lignes de code sont nécessaires pour créer un fichier PDF à partir de code HTML. C'est une solution rapide, fiable, et qui fait gagner du temps avec des résultats précis.

Téléchargez IronPDF et essayez-le gratuitement gratuitement. Après la période d'essai, les licences commencent à $799.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite