Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Génération de rapports

APERTO-NOTA

Génération de PDF : ReportLab

Créer un fichier PDF en Python peut se faire avec la bibliothèque reportlab, qui permet de générer des documents PDF dynamiquement. Elle offre un contrôle précis sur la mise en page, les polices, les tableaux, les images, etc.

Installation

pip install reportlab

Exemple de création simple

from reportlab.pdfgen import canvas

c = canvas.Canvas("exemple.pdf")
c.drawString(100, 750, "Bonjour, ceci est un PDF généré avec ReportLab.")
c.save()

Exemple avec plusieurs lignes

from reportlab.pdfgen import canvas

c = canvas.Canvas("exemple.pdf")
lignes = ["Nom : Alice", "Âge : 30", "Email : alice@example.com"]

y = 750
for ligne in lignes:
    c.drawString(100, y, ligne)
    y -= 20

c.save()

Ces exemples montrent comment générer un fichier PDF avec du texte positionné manuellement. ReportLab est très puissant pour créer des rapports, des factures ou des documents automatisés.

Exercice

Solution to Exercise 1 #
from reportlab.pdfgen import canvas

# Données
utilisateurs = [
    {"id": 1, "name": "Alice", "email": "alice@example.com"},
    {"id": 2, "name": "Bob", "email": "bob@example.com"},
    {"id": 3, "name": "Charlie", "email": "charlie@example.com"}
]

# Création du PDF
c = canvas.Canvas("users.pdf")

# Titre
c.setFont("Helvetica-Bold", 16)
c.drawString(100, 800, "Liste des utilisateurs")

# Contenu
c.setFont("Helvetica", 12)
y = 770
for u in utilisateurs:
    ligne = f"{u['id']} - {u['name']} - {u['email']}"
    c.drawString(100, y, ligne)
    y -= 20

# Sauvegarde
c.save()
print("Fichier PDF 'users.pdf' généré avec succès.")