PDF genereren in Python
Mijn favoriete bibliotheek is pdf-reports
PDF-rapporten genereren met Python
Python, met zijn uitgebreide bibliotheken en modules, biedt krachtige tools voor het genereren van professionele PDF-rapporten. Deze gids bespreekt verschillende methoden om PDF-documenten te maken met Python, waaronder populaire bibliotheken zoals ReportLab, FPDF, Xhtml2pdf, WeasyPrint, Jinja2, pdf-reports en PdfKit. Het is onderdeel van onze Documentatie-tools in 2026: Markdown, LaTeX, PDF & Afdrukwerkstromen hub.

Waarom PDF-rapporten genereren met Python?
- Automatisering: Python-scripts kunnen de rapportgeneratie automatiseren, wat tijd bespaart en menselijke fouten vermindert.
- Aanpassing: Rapporten kunnen worden aangepast aan specifieke behoeften door tekst, afbeeldingen, tabellen en grafieken toe te voegen.
- Consistentie: Zorg voor merkconsistentie over rapporten met gestandaardiseerde sjablonen.
- Verscheidenheid: Genereer facturen, bedrijfsrapporten, gegevenssamenvattingen of elk ander documenttype.
Populaire Python-bibliotheken voor PDF-generatie
ReportLab
ReportLab is een veelzijdige bibliotheek die het mogelijk maakt om PDF-documenten programmatisch te maken. Het ondersteunt het toevoegen van tekst, afbeeldingen, tabellen en grafieken, waardoor het geschikt is voor verschillende rapporttypen.
Voordelen:
- Rijke functionaliteit
- Hoger niveau API voor eenvoudig gebruik
- Ondersteunt geavanceerde functies zoals annotaties en interaktieve vormen
Nadelen:
- Steilere leercurve vergeleken met andere bibliotheken
- Minder intuïtieve API voor sommige taken
Gebruik van ReportLab
Installatie: Installeer ReportLab via pip:
pip install reportlab
Basisinstelling:
from reportlab.pdfgen import canvas
c = canvas.Canvas('hello.pdf')
# Tekst toevoegen:
python c.drawString(100, 800, "Hello World")
# Opslaan van de PDF:
python c.save()
FPDF
FPDF is een eenvoudige maar krachtige PDF-creatiebibliotheek geschreven in zuivere Python. Het is ideaal voor het genereren van basis PDF-documenten met minimale code.
Voordelen:
- Eenvoudig te leren en gebruiken
- Leger en snel
- Ondersteunt Unicode-tekens
Nadelen:
- Beperkte functionaliteit vergeleken met ReportLab
- Minder controle over de positie van elementen op de pagina
Gebruik van FPDF
Installatie: Installeer FPDF via pip:
pip install fpdf2
Basisinstelling:
from fpdf import FPDF pdf = FPDF()
# Tekst toevoegen:
python pdf.add_page()
pdf.set_font('Arial', 'B', 16)
pdf.cell(40, 10, 'Hello World')
# Opslaan van de PDF:
python pdf.output('hello.pdf', 'F')
Xhtml2pdf
Xhtml2pdf is een converter van CSS/HTML naar PDF die ReportLab onder de motorkap gebruikt. Het is ideaal voor het genereren van PDF’s van HTML-sjablonen, waardoor het een uitstekende keuze is voor web-naar-PDF-conversies.
Voordelen:
- Converteert HTML en CSS naar PDF
- Ondersteunt complexe lay-outs en opmaak
- Integreert goed met webframeworks zoals Django
Nadelen:
- Vereist kennis van HTML en CSS
- Mogelijk niet geschikt voor eenvoudige, niet-webgebaseerde rapporten
Gebruik van Xhtml2pdf
Installatie: Installeer Xhtml2pdf via pip:
pip install xhtml2pdf
PDF genereren vanuit 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 is een veelzijdige Python-bibliotheek die ontwikkelaars in staat stelt om HTML en CSS om te zetten in PDF-documenten met hoge kwaliteit rendering. Het is vooral handig voor het genereren van rapporten, facturen of andere documenten die nauwkeurige opmaak vereisen. Hieronder zijn verschillende voorbeelden die laten zien hoe WeasyPrint kan worden gebruikt in verschillende scenario’s.
Kenmerken
- Converteert HTML en CSS naar PDF-documenten.
- Verwerkt dynamische gegevensrendering met behulp van sjabloonengines zoals Jinja2.
Installatie:
pip install weasyprint
Hier is een eenvoudig voorbeeld van het genereren van een PDF vanuit een HTML-string:
from weasyprint import HTML
html_string = """
<html>
<head><title>Voorbeeld PDF</title></head>
<body>
<h1>Hallo, WeasyPrint!</h1>
<p>Dit is een voorbeeld PDF gegenereerd met behulp van WeasyPrint.</p>
</body>
</html>
"""
HTML(string=html_string).write_pdf("voorbeeld.pdf")
In dit voorbeeld wordt de HTML-klasse van WeasyPrint gebruikt om een HTML-string om te zetten in een PDF-bestand genaamd “voorbeeld.pdf”.
HTML laden vanuit bestanden
Je kunt ook HTML-inhoud rechtstreeks laden vanuit bestanden:
from weasyprint import HTML
# HTML laden vanuit een bestand
HTML('voorbeeld.html').write_pdf('uitvoer.pdf')
Deze methode is handig als je je HTML-inhoud opslaat in een extern bestand. Gebruik van CSS-stijlbladen
WeasyPrint ondersteunt het gebruik van CSS-stijlbladen om je PDF-documenten op te maken. Hier is hoe je een CSS-bestand kunt toepassen:
from weasyprint import HTML
# HTML en CSS laden vanuit bestanden
HTML('voorbeeld.html').write_pdf('uitvoer.pdf', stylesheets=['voorbeeld.css'])
Dit maakt het mogelijk om complexere opmaak te gebruiken, waardoor het makkelijker wordt om visueel aantrekkelijke PDF’s te maken .
Jinja2
Jinja2 is een krachtige sjabloonengine voor Python die het mogelijk maakt om dynamische inhoud te genereren door Python-expressies, voorwaarden en lussen in sjablonen te embedden. Deze gids leidt je door verschillende voorbeelden van het gebruik van Jinja2 in Python, van basisvariabelenvervanging tot geavanceerde functies zoals sjabloonovererving.
Belangrijke kenmerken van Jinja2
- Een sjabloonengine die kan worden gebruikt in combinatie met WeasyPrint of ReportLab voor het dynamisch genereren van HTML-inhoud.
- Ideaal voor het inbedden van gegevens in vooraf gedefinieerde sjablonen.
- Installatie:
pip install jinja2
zie voorbeelden op de officiële Jinja2 documentatiepagina: https://jinja.palletsprojects.com/en/3.0.x/
pdfkit
pdfkit is een krachtige Python-bibliotheek die het proces van het converteren van HTML-inhoud naar PDF-documenten vereenvoudigt. Het fungeert als een wrapper voor de wkhtmltopdf-utility, die WebKit gebruikt om HTML-pagina’s nauwkeurig in PDF-formaat te renderen. Deze gids leidt je door verschillende voorbeelden en toepassingen van het genereren van PDF’s met pdfkit.
Belangrijke kenmerken
- Een Python-wrapper voor wkhtmltopdf, die HTML naar PDF converteert.
- Vereist een systeemwijde installatie van wkhtmltopdf. https://wkhtmltopdf.org/downloads.html
Installatie:
# en zorg ervoor dat wkhtmltopdf is geïnstalleerd.
Basisgebruik - converteren van een HTML-string naar PDF
Je kunt een eenvoudige HTML-string converteren naar een PDF-bestand met pdfkit.from_string():
import pdfkit
html_voorbeeld = """
<html>
<head><title>Voorbeeld PDF</title></head>
<body>
<h1>Dit is een kop</h1>
<p>Eerste regel.</p>
<p>Tweede regel.</p>
<p>Derde regel.</p>
<p>Vierde regel.</p>
</body>
</html>
"""
pdfkit.from_string(html_voorbeeld, 'uitvoer.pdf')
Dit zal een PDF-bestand genaamd uitvoer.pdf genereren in de huidige directory.
Lokaal HTML-bestand converteren naar PDF
Als je een HTML-bestand lokaal hebt opgeslagen, gebruik dan pdfkit.from_file():
import pdfkit
pdfkit.from_file('lokale.html', 'voorbeeld.pdf')
PDF-rapportbibliotheek (pdf-reports)
Het genereren van PDF-rapporten met de pdf-reports-bibliotheek in Python kan een krachtige manier zijn om professionele documenten te maken vanuit HTML- of Pug-sjablonen. Deze bibliotheek maakt gebruik van moderne componenten via het Semantic UI-framework en biedt routines voor het inbedden van tabellen, grafieken en andere elementen in je PDF’s.
De pdf-reports-bibliotheek is ontworpen om visueel aantrekkelijke PDF-rapporten te maken vanuit HTML- of Pug-sjablonen. Het ondersteunt officieel Python 3.x, maar kan ook op Python 2.x lopen met de juiste versie van weasyprint. Dit maakt het een veelzijdig hulpmiddel voor het genereren van dynamische en goed gestructureerde documenten programmatisch.
Belangrijke kenmerken
- Moderne componenten: Gebruikt het Semantic UI-framework voor moderne componenten.
- Inbedden van elementen: Stelt in te bedden tabellen, grafieken en andere elementen in de PDF’s.
- Sjabloonondersteuning: Ondersteunt HTML- en Pug-sjablonen voor flexibele rapportontwerp.
Voorbeeldgebruik van pdf-reports
Installatie:
pip install pdf-reports
Hier is een basisvoorbeeld van hoe de pdf-reports-bibliotheek kan worden gebruikt:
from pdf_reports import PDFReport
# Definieer je sjabloonbestand (sjabloon.pug)
sjabloon = """
doctype html
html
head
title= titel
body
h1= titel
p Dit is een voorbeeldrapport.
"""
# Maak een PDF-rapportinstantie
rapport = PDFReport(sjabloon)
# Stel de context voor het sjabloon in
context = {
'titel': 'Voorbeeldrapport'
}
# Genereer de PDF
pdf = rapport.generate(context, output='voorbeeldrapport.pdf')
Opstap naar PDF-generatie in Python
Python biedt een reeks krachtige bibliotheken voor het genereren van PDF-rapporten. Of je nu facturen, bedrijfsrapporten of gegevenssamenvattingen maakt, deze tools laten je de proces automatiseren, je documenten aanpassen en merkconsistentie waarborgen. Kies de bibliotheek die het beste bij je behoeften past en begin vandaag met het maken van professionele PDF’s!