Génération de PDF en Python

Ma bibliothèque préférée est pdf-reports.

Sommaire

Génération de rapports PDF avec Python

Python, grâce à ses bibliothèques et modules extensifs, offre des outils puissants pour générer des rapports PDF professionnels. Ce guide explore différentes méthodes pour créer des documents PDF avec Python, couvrant des bibliothèques populaires comme ReportLab, FPDF, Xhtml2pdf, WeasyPrint, Jinja2, pdf-reports et PdfKit. Il fait partie de notre Outils de documentation en 2026 : Markdown, LaTeX, PDF et workflows d’impression hub.

python sur le rapport

Pourquoi générer des rapports PDF avec Python ?

  • Automatisation : Les scripts Python peuvent automatiser la génération de rapports, économisant du temps et réduisant les erreurs humaines.
  • Personnalisation : Adaptez les rapports à des besoins spécifiques en ajoutant du texte, des images, des tableaux et des graphiques.
  • Cohérence : Assurez la cohérence de la marque dans les rapports grâce à des modèles standardisés.
  • Polyvalence : Générez des factures, des rapports d’entreprise, des résumés de données ou tout autre type de document.

Bibliothèques populaires de génération de PDF en Python

ReportLab

ReportLab est une bibliothèque versatile qui permet de créer des documents PDF programmément. Elle prend en charge l’ajout de texte, d’images, de tableaux et de graphiques, la rendant adaptée à divers types de rapports.

Avantages :

  • Ensemble de fonctionnalités riche
  • API de haut niveau pour une utilisation facile
  • Prend en charge des fonctionnalités avancées comme les annotations et les formulaires interactifs

Inconvénients :

  • Courbe d’apprentissage plus pentue par rapport aux autres bibliothèques
  • API moins intuitive pour certaines tâches

Utilisation de ReportLab

Installation : Installez ReportLab via pip :

pip install reportlab

Configuration de base :

from reportlab.pdfgen import canvas
c = canvas.Canvas('hello.pdf')
# Ajout de texte :
python c.drawString(100, 800, "Hello World")
# Enregistrement du PDF :
python c.save()

FPDF

FPDF est une bibliothèque simple mais puissante de création de PDF écrite en Python pur. Elle est idéale pour générer des documents PDF basiques avec un code minimal.

Avantages :

  • Facile à apprendre et à utiliser
  • Légère et rapide
  • Prend en charge les caractères Unicode

Inconvénients :

  • Ensemble de fonctionnalités limité par rapport à ReportLab
  • Moins de contrôle sur la position des éléments sur la page

Utilisation de FPDF

Installation : Installez FPDF via pip :

pip install fpdf2
Configuration de base :
from fpdf import FPDF pdf = FPDF()

# Ajout de texte :
python pdf.add_page()
pdf.set_font('Arial', 'B', 16)
pdf.cell(40, 10, 'Hello World')
# Enregistrement du PDF :
python pdf.output('hello.pdf', 'F')

Xhtml2pdf

Xhtml2pdf est un convertisseur CSS/HTML en PDF qui utilise ReportLab en coulisses. Il est parfait pour générer des PDF à partir de modèles HTML, en faisant ainsi un excellent choix pour les conversions web-to-PDF.

Avantages :

  • Convertit HTML et CSS en PDF
  • Prend en charge des dispositions et styles complexes
  • Intègre bien avec les frameworks web comme Django

Inconvénients :

  • Exige des connaissances en HTML et CSS
  • Peut ne pas être adapté aux rapports simples non basés sur le web

Utilisation de Xhtml2pdf

Installation : Installez Xhtml2pdf via pip :

pip install xhtml2pdf

Génération d’un PDF à partir d’HTML : python

from xhtml2pdf import pisa
html = "<h1>Hello World</h1>"
with open('hello.pdf', 'wb') as output_file:
  pisa_status = pisa.CreatePDF(html, dest=output_file)

WeasyPrint

WeasyPrint est une bibliothèque versatile de Python qui permet aux développeurs de convertir HTML et CSS en documents PDF avec un rendu de haute qualité. Elle est particulièrement utile pour générer des rapports, des factures ou tout autre document nécessitant une mise en forme précise. Voici plusieurs exemples montrant comment utiliser WeasyPrint dans divers scénarios.

Fonctionnalités

  • Convertit HTML et CSS en documents PDF.
  • Gère le rendu dynamique des données avec l’aide de moteurs de modélisation comme Jinja2.

Installation :

pip install weasyprint

Voici un exemple simple de génération d’un PDF à partir d’une chaîne HTML :

from weasyprint import HTML

html_string = """
<html>
<head><title>PDF d'exemple</title></head>
<body>
<h1>Bonjour, WeasyPrint !</h1>
<p>Ceci est un exemple de PDF généré à l'aide de WeasyPrint.</p>
</body>
</html>
"""

HTML(string=html_string).write_pdf("sample.pdf")

Dans cet exemple, la classe HTML de WeasyPrint est utilisée pour convertir une chaîne HTML en un fichier PDF nommé “sample.pdf”.

Chargement de HTML à partir de fichiers

Vous pouvez également charger du contenu HTML directement à partir de fichiers :

from weasyprint import HTML

# Charger le HTML à partir d'un fichier
HTML('sample.html').write_pdf('output.pdf')

Cette méthode est utile lorsque votre contenu HTML est stocké dans un fichier externe. Utilisation de feuilles de style CSS

WeasyPrint prend en charge l’utilisation de feuilles de style CSS pour styliser vos documents PDF. Voici comment vous pouvez appliquer un fichier CSS :

from weasyprint import HTML

# Charger le HTML et la feuille de style CSS à partir de fichiers
HTML('sample.html').write_pdf('output.pdf', stylesheets=['sample.css'])

Cela permet une mise en forme plus complexe, facilitant la création de PDF visuellement attrayants .

Jinja2

Jinja2 est un moteur de modélisation puissant pour Python qui permet de générer du contenu dynamique en insérant des expressions Python, des conditions et des boucles dans les modèles. Ce guide vous guidera à travers divers exemples d’utilisation de Jinja2 en Python, allant de la substitution de variables de base à des fonctionnalités plus avancées comme l’héritage de modèles.

Fonctionnalités clés de Jinja2

  • Un moteur de modélisation pouvant être utilisé conjointement avec WeasyPrint ou ReportLab pour générer dynamiquement du contenu HTML.
  • Idéal pour insérer des données dans des modèles prédéfinis.
  • Installation :
pip install jinja2

Voir des exemples sur la page de documentation officielle de Jinja2 : https://jinja.palletsprojects.com/en/3.0.x/

pdfkit

pdfkit est une bibliothèque puissante de Python qui simplifie le processus de conversion du contenu HTML en documents PDF. Elle agit comme un wrapper pour l’utilitaire wkhtmltopdf, exploitant WebKit pour rendre les pages HTML avec précision en format PDF. Ce guide vous guidera à travers divers exemples et cas d’utilisation de la génération de PDF à l’aide de pdfkit.

Fonctionnalités clés

Installation :

# et assurez-vous que wkhtmltopdf est installé.

Utilisation de base - Conversion d’une chaîne HTML en PDF

Vous pouvez convertir une simple chaîne HTML en un fichier PDF à l’aide de pdfkit.from_string():

import pdfkit

html_sample = """
<html>
<head><title>PDF d'exemple</title></head>
<body>
<h1>Ceci est un titre</h1>
<p>Première ligne.</p>
<p>Deuxième ligne.</p>
<p>Troisième ligne.</p>
<p>Quatrième ligne.</p>
</body>
</html>
"""

pdfkit.from_string(html_sample, 'output.pdf')

Cela générera un fichier PDF nommé output.pdf dans le répertoire courant.

Conversion d’un fichier HTML local en PDF

Si vous avez un fichier HTML stocké localement, utilisez pdfkit.from_file():

import pdfkit

pdfkit.from_file('local.html', 'sample.pdf')

Bibliothèque de rapports PDF (pdf-reports)

La création de rapports PDF à l’aide de la bibliothèque pdf-reports en Python peut être une méthode puissante pour générer des documents professionnels à partir de modèles HTML ou Pug. Cette bibliothèque exploite des composants modernes via le framework Semantic UI et fournit des routines pour intégrer des tableaux, des graphiques et d’autres éléments dans vos PDF.

La bibliothèque pdf-reports est conçue pour créer des rapports PDF visuellement attrayants à partir de modèles HTML ou Pug. Elle prend officiellement en charge Python 3.x, mais peut également fonctionner sur Python 2.x avec la bonne version de weasyprint. Cela en fait un outil versatile pour générer des documents dynamiques et bien structurés de manière programmée.

Fonctionnalités clés

  • Composants modernes : Utilise le framework Semantic UI pour des composants modernes.
  • Intégration d’éléments : Permet d’intégrer des tableaux, des graphiques et d’autres éléments dans les PDF.
  • Support des modèles : Prend en charge les modèles HTML et Pug pour une conception de rapport flexible.

Exemple d’utilisation de pdf-reports

Installation :

pip install pdf-reports

Voici un exemple de base de l’utilisation de la bibliothèque pdf-reports :

from pdf_reports import PDFReport

# Définir votre fichier de modèle (template.pug)
template = """
doctype html
html
  head
    title= title
  body
    h1= title
    p Ceci est un exemple de rapport.
"""

# Créer une instance de rapport PDF
report = PDFReport(template)

# Définir le contexte pour le modèle
context = {
    'title': 'Rapport d'exemple'
}

# Générer le PDF
pdf = report.generate(context, output='sample_report.pdf')

Décollage sur la génération de PDF en Python

Python offre une gamme d’outils puissants pour générer des rapports PDF. Que vous créiez des factures, des rapports d’entreprise ou des résumés de données, ces outils vous permettent d’automatiser le processus, de personnaliser vos documents et d’assurer la cohérence de la marque. Choisissez la bibliothèque qui convient le mieux à vos besoins et commencez à créer des PDF professionnels dès aujourd’hui !

Liens utiles