CodeGym /Java Kurs /Python SELF DE /Text- und Überschriftgestaltung in PDF-Dokumenten mit Rep...

Text- und Überschriftgestaltung in PDF-Dokumenten mit ReportLab

Python SELF DE
Level 44 , Lektion 3
Verfügbar

1. Grundlagen der Text- und Überschrifteneinfügung in PDFs

In ReportLab wird Text mit einem canvas-Objekt hinzugefügt, das Methoden zum Festlegen von Schriftarten, Farben, Größen und Textpositionen bereitstellt.

Ein einfaches PDF mit einer Überschrift und Text erstellen

Python

from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4

# Erstellen eines neuen PDFs
pdf_file = canvas.Canvas("styled_text.pdf", pagesize=A4)
width, height = A4

# Überschrift hinzufügen
pdf_file.setFont("Helvetica-Bold", 20)
pdf_file.drawString(100, height - 100, "Verkaufsbericht")

# Haupttext hinzufügen
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 130, "Dieses Dokument enthält Informationen zu den Verkäufen des letzten Quartals.")

# PDF speichern
pdf_file.save()

Dieser Code erstellt eine PDF-Datei, die eine Überschrift und Haupttext enthält. Wir legen die Schriftart und -größe mit der Methode setFont() fest.

2. Textgestaltung und -formatierung

In ReportLab kann man Farbe, Schriftart und Größe des Textes ändern, um stilvolle Überschriften und Hauptinhalte zu erstellen. Dies hilft, das Dokument zu strukturieren und es leserfreundlicher zu machen.

Schriftart und -größe ändern

ReportLab unterstützt Standard-Schriftarten wie Helvetica, Times-Roman und Courier. Du kannst den Schriftstil (normal, fett oder kursiv) und die Größe mit setFont() angeben.

Python

pdf_file.setFont("Helvetica-Bold", 18)  # Überschrift in Fettschrift
pdf_file.drawString(100, height - 50, "Hauptüberschrift")

pdf_file.setFont("Helvetica-Oblique", 14)  # Unterüberschrift kursiv
pdf_file.drawString(100, height - 80, "Unterüberschrift: Quartalsübersicht")

Textfarbe ändern

Du kannst die Textfarbe mit der Methode setFillColorRGB() ändern, die RGB-Werte von 0 bis 1 akzeptiert.

Python

pdf_file.setFillColorRGB(0.2, 0.4, 0.6)  # Blaue Farbe
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 110, "Dieser Text ist blau.")

Du kannst auch vordefinierte Farben aus reportlab.lib.colors verwenden.

Python

from reportlab.lib import colors

pdf_file.setFillColor(colors.red)
pdf_file.drawString(100, height - 140, "Roter Text")

3. Textausrichtung und mehrzeiliger Text

Wenn der Text lang ist, ist es besser, ihn in einem mehrzeiligen Format darzustellen. ReportLab stellt die Klasse TextObject bereit, die automatischen Zeilenumbruch unterstützt.

Mehrzeiliger Text mit TextObject

Python

text = """
Der Bericht enthält eine Analyse der Verkäufe der letzten drei Monate.
Wir betrachten Veränderungen und deren Einfluss auf das allgemeine Unternehmenswachstum.
"""

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)

Dieser Code erstellt einen Textblock mit mehreren Zeilen, von denen jede zur PDF hinzugefügt wird. Die Verwendung von TextObject ist praktisch für langen Text, da dies eine Autoformatierung ermöglicht.

4. Verwendung von Absätzen zur Textgestaltung

Die Klasse Paragraph aus dem Modul reportlab.platypus ermöglicht das Hinzufügen von stilisiertem Text mit Unterstützung von HTML-Tags wie <b>, <i> und <u>. Paragraph unterstützt auch Ausrichtung und Einrückungen, was ihn ideal für die Erstellung formatierten Textes macht.

Absätze mit Paragraph erstellen

Python

from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import SimpleDocTemplate, Paragraph

# PDF Setup
doc = SimpleDocTemplate("styled_paragraphs.pdf", pagesize=A4)
styles = getSampleStyleSheet()
elements = []

# Absatz mit fettgedrucktem und kursivem Text erstellen
text = "Verkaufsbericht
Quartalsbericht 2023" paragraph = Paragraph(text, styles["Title"]) elements.append(paragraph) # Haupttext hinzufügen main_text = """ Dieser Bericht enthält wichtige Daten zu den Verkäufen des letzten Quartals sowie eine Analyse des Einflusses der Verkäufe auf die Gesamteinnahmen des Unternehmens. """ paragraph = Paragraph(main_text, styles["BodyText"]) elements.append(paragraph) # PDF erstellen doc.build(elements)

Hier verwenden wir Paragraph, um formatierten Text hinzuzufügen, der HTML-Tags zur Gestaltung (fettgedruckter und kursiver Text) enthält. getSampleStyleSheet() stellt Basisstile wie Title und BodyText bereit, die angepasst werden können.

5. Textstile anwenden

ReportLab ermöglicht die Erstellung und Anpassung eigener Stile, die zur Textformatierung verwendet werden können. Dies ist besonders nützlich beim Erstellen von Berichten, in denen wiederkehrende Stile für Überschriften, Unterüberschriften und Haupttext verwendet werden.

Benutzerdefinierten Stil anpassen

Python

from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import ParagraphStyle
from reportlab.platypus import SimpleDocTemplate, Paragraph

# PDF Setup
doc = SimpleDocTemplate("custom_styles.pdf", pagesize=A4)
elements = []

# Benutzerdefinierten Stil erstellen
custom_style = ParagraphStyle(
    name="CustomStyle",
    fontName="Helvetica-Bold",
    fontSize=14,
    leading=18,
    textColor=colors.darkgreen,
    spaceAfter=10,
)

# Absatz mit benutzerdefiniertem Stil erstellen
paragraph = Paragraph("Dies ist eine Überschrift mit benutzerdefiniertem Stil", custom_style)
elements.append(paragraph)

# Haupttext hinzufügen
default_style = ParagraphStyle(
    name="Default",
    fontName="Helvetica",
    fontSize=12,
    leading=14,
    textColor=colors.black,
    spaceAfter=10,
)
paragraph = Paragraph("Dies ist Haupttext mit Verwendung des Standardstils.", default_style)
elements.append(paragraph)

# PDF erstellen
doc.build(elements)

In diesem Beispiel erstellen wir einen benutzerdefinierten Stil CustomStyle mit einer grünen Textfarbe und größerer Schrift, die auf die Überschrift angewendet wird.

6. Dokument mit Überschriften und Text erstellen

Um ein PDF-Dokument strukturierter zu machen, kann man einen mehrseitigen Bericht mit Abschnitten erstellen, von denen jeder seine eigene Überschrift und stilisierten Text hat.

Strukturierten mehrseitigen Bericht erstellen

Python

from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.platypus import SimpleDocTemplate, Paragraph, PageBreak

# PDF Setup
doc = SimpleDocTemplate("structured_report.pdf", pagesize=A4)
styles = getSampleStyleSheet()
elements = []

# Stil für die Überschrift
title_style = ParagraphStyle("TitleStyle", parent=styles["Title"], fontSize=18, spaceAfter=12)

# Überschrift der ersten Seite
title = Paragraph("Verkaufsbericht 2023", title_style)
elements.append(title)

# Haupttext
main_text = """
Dieser Bericht stellt detaillierte Informationen zu den Verkäufen des Unternehmens im ersten Quartal 2023 bereit.
Es werden Daten zu Regionen, Produktkategorien und wichtigen Kennzahlen einbezogen.
"""
elements.append(Paragraph(main_text, styles["BodyText"]))

# Wechsel zur nächsten Seite
elements.append(PageBreak())

# Überschrift der zweiten Seite
subtitle = Paragraph("Verkaufsanalyse nach Kategorien", title_style)
elements.append(subtitle)

# Text für die zweite Seite
category_text = """
Auf Seite zwei werden Daten zu den Verkäufen nach Produktkategorien dargestellt.
Jede Kategorie wird mit Blick auf die Verkaufsdynamik und Marktveränderungen analysiert.
"""
elements.append(Paragraph(category_text, styles["BodyText"]))
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION