1. Bases de l'ajout de texte et de titres dans des PDF
Dans ReportLab, le texte est ajouté en utilisant l'objet canvas
, qui fournit des méthodes pour
définir des polices, des couleurs, des tailles et des positions pour le texte.
Créer un PDF simple avec un titre et du texte
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
# Crée un nouveau PDF
pdf_file = canvas.Canvas("styled_text.pdf", pagesize=A4)
width, height = A4
# Ajouter un titre
pdf_file.setFont("Helvetica-Bold", 20)
pdf_file.drawString(100, height - 100, "Rapport des ventes")
# Ajouter le texte principal
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 130, "Ce document contient des informations sur les ventes du dernier trimestre.")
# Sauvegarde du PDF
pdf_file.save()
Ce code crée un fichier PDF contenant un titre et du texte principal. Nous définissons la police et la taille du texte en utilisant la méthode setFont()
.
2. Stylisation et formatage du texte
Dans ReportLab, vous pouvez modifier la couleur, la police et la taille du texte pour créer des titres et un contenu principal attrayants. Cela aide à structurer le document et le rend plus agréable à lire.
Changer la police et la taille du texte
ReportLab prend en charge les polices standard comme Helvetica
, Times-Roman
et
Courier
. Vous pouvez définir le style (normal, gras ou italique) et la taille de la police en utilisant setFont()
.
pdf_file.setFont("Helvetica-Bold", 18) # Titre en gras
pdf_file.drawString(100, height - 50, "Titre principal")
pdf_file.setFont("Helvetica-Oblique", 14) # Sous-titre en italique
pdf_file.drawString(100, height - 80, "Sous-titre : Résultats du trimestre")
Changer la couleur du texte
Vous pouvez modifier la couleur du texte à l'aide de la méthode setFillColorRGB()
, qui accepte des valeurs RGB de 0 à 1.
pdf_file.setFillColorRGB(0.2, 0.4, 0.6) # Couleur bleue
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 110, "Ce texte a une couleur bleue.")
Vous pouvez également utiliser des couleurs prédéfinies de reportlab.lib.colors
.
from reportlab.lib import colors
pdf_file.setFillColor(colors.red)
pdf_file.drawString(100, height - 140, "Texte rouge")
3. Alignement et texte multi-ligne
Si le texte est long, il est préférable de le présenter dans un format multi-ligne. ReportLab fournit une classe TextObject
, qui prend en charge le retour automatique à la ligne.
Texte multi-ligne avec TextObject
text = """
Le rapport contient une analyse des ventes des trois derniers mois.
Nous examinons les changements et leur impact sur la croissance globale de l'entreprise.
"""
text_object = pdf_file.beginText(100, height - 180)
text_object.setFont("Helvetica", 12)
text_object.setFillColor(colors.darkblue)
for line in text.split("\n"):
text_object.textLine(line)
pdf_file.drawText(text_object)
Ce code crée un bloc de texte avec plusieurs lignes, chacune étant ajoutée au PDF. Utiliser TextObject
est pratique pour un long texte car il gère le formatage automatiquement.
4. Utilisation des paragraphes pour la stylisation du texte
La classe Paragraph
du module reportlab.platypus
permet d'ajouter du texte stylisé avec prise en charge des balises HTML telles que <b>
, <i>
et <u>
. Paragraph
prend également en charge l'alignement et les marges, ce qui en fait un outil idéal pour créer du texte formaté.
Créer des paragraphes avec Paragraph
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import SimpleDocTemplate, Paragraph
# Configuration du PDF
doc = SimpleDocTemplate("styled_paragraphs.pdf", pagesize=A4)
styles = getSampleStyleSheet()
elements = []
# Création d'un paragraphe avec texte en gras et en italique
text = "Rapport des ventes
Rapport trimestriel 2023"
paragraph = Paragraph(text, styles["Title"])
elements.append(paragraph)
# Ajouter le texte principal
main_text = """
Ce rapport contient des données clés sur les ventes du dernier trimestre,
ainsi qu'une analyse des impacts des ventes sur le revenu global de l'entreprise.
"""
paragraph = Paragraph(main_text, styles["BodyText"])
elements.append(paragraph)
# Construction du PDF
doc.build(elements)
Ici, nous utilisons Paragraph
pour ajouter du texte formaté, incluant des balises HTML pour la stylisation (texte en gras et en italique). getSampleStyleSheet()
fournit des styles de base comme Title
et BodyText
, modifiables selon vos besoins.
5. Appliquer des styles de texte
ReportLab permet de créer et personnaliser vos propres styles pour formater le texte. C'est particulièrement utile pour générer des rapports comportant des styles répétitifs pour les titres, sous-titres et texte principal.
Configurer un style personnalisé
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import ParagraphStyle
from reportlab.platypus import SimpleDocTemplate, Paragraph
# Configuration du PDF
doc = SimpleDocTemplate("custom_styles.pdf", pagesize=A4)
elements = []
# Créer un style personnalisé
custom_style = ParagraphStyle(
name="CustomStyle",
fontName="Helvetica-Bold",
fontSize=14,
leading=18,
textColor=colors.darkgreen,
spaceAfter=10,
)
# Ajout d'un paragraphe avec style personnalisé
paragraph = Paragraph("C'est un titre avec un style personnalisé", custom_style)
elements.append(paragraph)
# Ajouter le texte principal
default_style = ParagraphStyle(
name="Default",
fontName="Helvetica",
fontSize=12,
leading=14,
textColor=colors.black,
spaceAfter=10,
)
paragraph = Paragraph("Ceci est un texte principal utilisant un style par défaut.", default_style)
elements.append(paragraph)
# Construction du PDF
doc.build(elements)
Dans cet exemple, nous créons un style personnalisé CustomStyle
avec une couleur de texte verte et une police plus grande, que nous appliquons à un titre.
GO TO FULL VERSION