PDF in Python generieren

Meine bevorzugte Bibliothek ist pdf-reports.

Inhaltsverzeichnis

PDF-Berichte mit Python erstellen

Python bietet mit seinen umfangreichen Bibliotheken und Modulen leistungsstarke Werkzeuge zur Erstellung professioneller PDF-Berichte.

Dieser Leitfaden untersucht verschiedene Methoden zur Erstellung von PDF-Dokumenten mit Python, wobei populäre Bibliotheken wie ReportLab, FPDF, Xhtml2pdf, WeasyPrint, Jinja2, pdf-reports und PdfKit behandelt werden.

python on the report

Warum PDF-Berichte mit Python erstellen?

  • Automatisierung: Python-Skripte können die Berichtserstellung automatisieren, wodurch Zeit gespart und menschliche Fehler reduziert werden.
  • Anpassungsfähigkeit: Berichte können an spezifische Anforderungen angepasst werden, indem Text, Bilder, Tabellen und Grafiken hinzugefügt werden.
  • Konsistenz: Markenidentität wird durch standardisierte Vorlagen über alle Berichte hinweg gewährleistet.
  • Vielseitigkeit: Rechnungen, Geschäftsberichte, Datenzusammenfassungen oder jeder andere Dokumenttyp können generiert werden.

Beliebte Python-Bibliotheken zur PDF-Generierung

ReportLab

ReportLab ist eine vielseitige Bibliothek, die es ermöglicht, PDF-Dokumente programmatisch zu erstellen. Sie unterstützt das Hinzufügen von Text, Bildern, Tabellen und Grafiken und ist daher für verschiedene Berichtstypen geeignet.

Vorteile:

  • Umfangreiche Funktionalität
  • Hochwertiges API für einfache Verwendung
  • Unterstützt erweiterte Funktionen wie Annotationen und interaktive Formulare

Nachteile:

  • Steilere Lernkurve im Vergleich zu anderen Bibliotheken
  • Weniger intuitives API für einige Aufgaben

Verwendung von ReportLab

Installation: Installieren Sie ReportLab mit pip:

pip install reportlab

Grundlegende Einrichtung:

from reportlab.pdfgen import canvas
c = canvas.Canvas('hello.pdf')
# Text hinzufügen:
python c.drawString(100, 800, "Hello World")
# PDF speichern:
python c.save()

FPDF

FPDF ist eine einfache, aber leistungsstarke PDF-Erstellungsbibliothek, die in reinem Python geschrieben ist. Sie ist ideal für die Erstellung grundlegender PDF-Dokumente mit minimalem Code.

Vorteile:

  • Einfach zu lernen und zu verwenden
  • Leichtgewichtig und schnell
  • Unterstützt Unicode-Zeichen

Nachteile:

  • Begrenzte Funktionalität im Vergleich zu ReportLab
  • Weniger Kontrolle über die Platzierung von Elementen auf der Seite

Verwendung von FPDF

Installation: Installieren Sie FPDF mit pip:

pip install fpdf2
Grundlegende Einrichtung:
from fpdf import FPDF pdf = FPDF()

# Text hinzufügen:
python pdf.add_page()
pdf.set_font('Arial', 'B', 16)
pdf.cell(40, 10, 'Hello World')
# PDF speichern:
python pdf.output('hello.pdf', 'F')

Xhtml2pdf

Xhtml2pdf ist ein CSS/HTML zu PDF-Converter, der ReportLab unter der Haube verwendet. Er ist perfekt für die Erstellung von PDFs aus HTML-Vorlagen und daher eine ausgezeichnete Wahl für Web-zu-PDF-Umwandlungen.

Vorteile:

  • Konvertiert HTML und CSS in PDF
  • Unterstützt komplexe Layouts und Styling
  • Integriert sich gut mit Web-Frameworks wie Django

Nachteile:

  • Erfordert Kenntnisse in HTML und CSS
  • Vielleicht nicht geeignet für einfache, nicht webbasierte Berichte

Verwendung von Xhtml2pdf

Installation: Installieren Sie Xhtml2pdf mit pip:

pip install xhtml2pdf

Erstellen eines PDFs aus 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 ist eine vielseitige Python-Bibliothek, die Entwicklern ermöglicht, HTML und CSS in PDF-Dokumente mit hoher Qualität zu konvertieren. Sie ist besonders nützlich für die Erstellung von Berichten, Rechnungen oder anderen Dokumenten, die präzise Formatierung erfordern. Im Folgenden sind mehrere Beispiele aufgeführt, die zeigen, wie WeasyPrint in verschiedenen Szenarien verwendet werden kann.

Funktionen

  • Konvertiert HTML und CSS in PDF-Dokumente.
  • Verarbeitet dynamische Datenrendering mit Hilfe von Vorlagen-Engines wie Jinja2.

Installation:

pip install weasyprint

Hier ist ein einfaches Beispiel zur Erstellung eines PDFs aus einer HTML-String:

from weasyprint import HTML

html_string = """
<html>
<head><title>Beispiel PDF</title></head>
<body>
<h1>Hallo, WeasyPrint!</h1>
<p>Dies ist ein Beispiel PDF, das mit WeasyPrint generiert wurde.</p>
</body>
</html>
"""

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

In diesem Beispiel wird die HTML-Klasse von WeasyPrint verwendet, um eine HTML-String in eine PDF-Datei namens “beispiel.pdf” zu konvertieren.

HTML aus Dateien laden

Sie können auch HTML-Inhalt direkt aus Dateien laden:

from weasyprint import HTML

# HTML aus einer Datei laden
HTML('beispiel.html').write_pdf('ausgabe.pdf')

Diese Methode ist nützlich, wenn Sie Ihren HTML-Inhalt in einer externen Datei gespeichert haben. CSS-Stilblätter verwenden

WeasyPrint unterstützt die Verwendung von CSS-Stilblättern, um Ihre PDF-Dokumente zu stylen. Hier ist, wie Sie ein CSS-Datei anwenden können:

from weasyprint import HTML

# HTML und CSS aus Dateien laden
HTML('beispiel.html').write_pdf('ausgabe.pdf', stylesheets=['beispiel.css'])

Dies ermöglicht komplexeres Styling und macht es einfacher, visuell ansprechende PDFs zu erstellen.

Jinja2

Jinja2 ist ein leistungsstarkes Vorlagen-Engine für Python, das es ermöglicht, dynamischen Inhalt zu generieren, indem Python-Ausdrücke, Bedingungen und Schleifen innerhalb von Vorlagen eingebettet werden. Dieser Leitfaden führt Sie durch verschiedene Beispiele zur Verwendung von Jinja2 in Python, von grundlegenden Variablenersetzungen bis hin zu fortgeschrittenen Funktionen wie Vorlagenvererbung.

Schlüsselmerkmale von Jinja2

  • Ein Vorlagen-Engine, der in Kombination mit WeasyPrint oder ReportLab verwendet werden kann, um dynamischen HTML-Inhalt zu generieren.
  • Ideal für das Einbetten von Daten in vordefinierte Vorlagen.
  • Installation:
pip install jinja2

siehe Beispiele auf der offiziellen Jinja2-Dokumentationsseite: https://jinja.palletsprojects.com/en/3.0.x/

pdfkit

pdfkit ist eine leistungsstarke Python-Bibliothek, die den Prozess der Konvertierung von HTML-Inhalt in PDF-Dokumente vereinfacht. Sie fungiert als Wrapper für die wkhtmltopdf-Utility, die WebKit verwendet, um HTML-Seiten genau in PDF-Format zu rendern. Dieser Leitfaden führt Sie durch verschiedene Beispiele und Anwendungsfälle der Erstellung von PDFs mit pdfkit.

Schlüsselmerkmale

Installation:

# und stellen Sie sicher, dass wkhtmltopdf installiert ist.

Grundlegende Verwendung - Konvertieren einer HTML-String in ein PDF

Sie können eine einfache HTML-String in eine PDF-Datei mit pdfkit.from_string() konvertieren:

import pdfkit

html_beispiel = """
<html>
<head><title>Beispiel PDF</title></head>
<body>
<h1>Dies ist ein Überschrift</h1>
<p>Erste Zeile.</p>
<p>Zweite Zeile.</p>
<p>Dritte Zeile.</p>
<p>Vierte Zeile.</p>
</body>
</html>
"""

pdfkit.from_string(html_beispiel, 'ausgabe.pdf')

Dies erzeugt eine PDF-Datei namens ausgabe.pdf im aktuellen Verzeichnis.

Konvertieren einer lokalen HTML-Datei in ein PDF

Wenn Sie eine HTML-Datei lokal haben, verwenden Sie pdfkit.from_file():

import pdfkit

pdfkit.from_file('lokale_datei.html', 'beispiel.pdf')

PDF-Berichte-Bibliothek (pdf-reports)

Die Erstellung von PDF-Berichten mit der pdf-reports-Bibliothek in Python kann eine mächtige Methode sein, um professionell aussehende Dokumente aus HTML- oder Pug-Vorlagen zu generieren. Diese Bibliothek nutzt moderne Komponenten über das Semantic UI-Framework und bietet Routinen zum Einbetten von Tabellen, Diagrammen und anderen Elementen in Ihre PDFs.

Die pdf-reports-Bibliothek ist so konzipiert, um visuell ansprechende PDF-Berichte aus HTML- oder Pug-Vorlagen zu erstellen. Sie unterstützt offiziell Python 3.x, kann aber auch unter Python 2.x mit der entsprechenden Version von WeasyPrint laufen. Dies macht sie zu einem vielseitigen Werkzeug zur programmgesteuerten Erstellung dynamischer und gut strukturierter Dokumente.

Schlüsselmerkmale

  • Moderne Komponenten: Nutzt das Semantic UI-Framework für moderne Aussehen.
  • Einbetten von Elementen: Ermöglicht das Einbetten von Tabellen, Diagrammen und anderen Elementen in die PDFs.
  • Vorlagenunterstützung: Unterstützt HTML- und Pug-Vorlagen für flexible Berichtsgestaltung.

Beispielverwendung von pdf-reports

Installation:

pip install pdf-reports

Hier ist ein grundlegendes Beispiel, wie die pdf-reports-Bibliothek verwendet werden kann:

from pdf_reports import PDFReport

# Definieren Sie Ihre Vorlagendatei (template.pug)
vorlage = """
doctype html
html
  head
    title= title
  body
    h1= title
    p Dies ist ein Beispielbericht.
"""

# Erstellen Sie eine PDF-Berichtsinstanz
bericht = PDFReport(vorlage)

# Legen Sie den Kontext für die Vorlage fest
kontext = {
    'title': 'Beispielbericht'
}

# Generieren Sie die PDF
pdf = bericht.generate(kontext, output='beispiel_bericht.pdf')

Ausblick auf die PDF-Generierung in Python

Python bietet eine Reihe leistungsstarker Bibliotheken zur Erstellung von PDF-Berichten. Ob Sie Rechnungen, Geschäftsberichte oder Datenzusammenfassungen erstellen, diese Tools ermöglichen es Ihnen, den Prozess zu automatisieren, Ihre Dokumente anzupassen und die Markenidentität zu gewährleisten. Wählen Sie die Bibliothek, die am besten zu Ihren Bedürfnissen passt, und beginnen Sie heute mit der Erstellung professioneller PDFs!