Generazione di PDF in Python
La mia libreria preferita è pdf-reports
Generazione di Report PDF con Python
Python, grazie alle sue estese librerie e moduli, offre strumenti potenti per la generazione di report PDF professionali. Questa guida esplora diversi metodi per creare documenti PDF utilizzando Python, coprendo librerie popolari come ReportLab, FPDF, Xhtml2pdf, WeasyPrint, Jinja2, pdf-reports e PdfKit. Fa parte del nostro Strumenti di Documentazione nel 2026: Markdown, LaTeX, PDF e Flussi di Lavoro per la Stampa hub.

Perché Generare Report PDF con Python?
- Automazione: gli script Python possono automatizzare la generazione dei report, risparmiando tempo e riducendo gli errori umani.
- Personalizzazione: personalizza i report in base a esigenze specifiche aggiungendo testo, immagini, tabelle e grafici.
- Coerenza: assicura la coerenza del branding nei report con modelli standardizzati.
- Versatilità: genera fatture, report aziendali, sintesi dei dati o qualsiasi altro tipo di documento.
Librerie Popolari di Python per la Generazione di PDF
ReportLab
ReportLab è una libreria versatile che permette di creare documenti PDF programmaticamente. Supporta l’aggiunta di testo, immagini, tabelle e grafici, rendendola adatta a diversi tipi di report.
Punti di forza:
- Set di funzionalità ricco
- API di alto livello per un utilizzo facile
- Supporta funzionalità avanzate come annotazioni e moduli interattivi
Punti deboli:
- Curva di apprendimento più ripida rispetto ad altre librerie
- API meno intuitiva per alcune attività
Utilizzo di ReportLab
Installazione: Installa ReportLab utilizzando pip:
pip install reportlab
Configurazione base:
from reportlab.pdfgen import canvas
c = canvas.Canvas('hello.pdf')
# Aggiungere testo:
python c.drawString(100, 800, "Hello World")
# Salvare il PDF:
python c.save()
FPDF
FPDF è una libreria semplice ma potente per la creazione di documenti PDF scritta in Python puro. È ideale per generare documenti PDF basilari con un codice minimo.
Punti di forza:
- Facile da imparare e utilizzare
- Leggera e veloce
- Supporta caratteri Unicode
Punti deboli:
- Set di funzionalità limitato rispetto a ReportLab
- Meno controllo sulla posizione degli elementi sulla pagina
Utilizzo di FPDF
Installazione: Installa FPDF utilizzando pip:
pip install fpdf2
Configurazione base:
from fpdf import FPDF pdf = FPDF()
# Aggiungere testo:
python pdf.add_page()
pdf.set_font('Arial', 'B', 16)
pdf.cell(40, 10, 'Hello World')
# Salvare il PDF:
python pdf.output('hello.pdf', 'F')
Xhtml2pdf
Xhtml2pdf è un convertitore di HTML/CSS in PDF che utilizza ReportLab alle sue spalle. È perfetto per generare PDF da modelli HTML, rendendolo un’ottima scelta per le conversioni da web a PDF.
Punti di forza:
- Converte HTML e CSS in PDF
- Supporta layout complessi e stili
- Si integra bene con framework web come Django
Punti deboli:
- Richiede conoscenza di HTML e CSS
- Potrebbe non essere adatto per report semplici non basati su web
Utilizzo di Xhtml2pdf
Installazione: Installa Xhtml2pdf utilizzando pip:
pip install xhtml2pdf
Generazione di un PDF da 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 è una libreria versatile per Python che consente agli sviluppatori di convertire HTML e CSS in documenti PDF con un rendering di alta qualità. È particolarmente utile per generare report, fatture o qualsiasi altro documento che richiede un formattazione precisa. Di seguito sono riportati diversi esempi che dimostrano come utilizzare WeasyPrint in diversi scenari.
Funzionalità
- Converte HTML e CSS in documenti PDF.
- Gestisce il rendering dinamico dei dati con l’aiuto di motori di templating come Jinja2.
Installazione:
pip install weasyprint
Ecco un esempio semplice di generazione di un PDF da una stringa HTML:
from weasyprint import HTML
html_string = """
<html>
<head><title>PDF di Esempio</title></head>
<body>
<h1>Ciao, WeasyPrint!</h1>
<p>Questo è un esempio di PDF generato utilizzando WeasyPrint.</p>
</body>
</html>
"""
HTML(string=html_string).write_pdf("sample.pdf")
In questo esempio, la classe HTML di WeasyPrint viene utilizzata per convertire una stringa HTML in un file PDF denominato “sample.pdf”.
Caricamento di HTML da File
È anche possibile caricare il contenuto HTML direttamente da file:
from weasyprint import HTML
# Caricamento di HTML da un file
HTML('sample.html').write_pdf('output.pdf')
Questo metodo è utile quando hai il contenuto HTML archiviato in un file esterno. Utilizzo di Fogli di Stile CSS
WeasyPrint supporta l’uso di fogli di stile CSS per stilizzare i documenti PDF. Ecco come puoi applicare un foglio di stile:
from weasyprint import HTML
# Caricamento di HTML e CSS da file
HTML('sample.html').write_pdf('output.pdf', stylesheets=['sample.css'])
Questo permette uno stilizzazione più complessa, rendendo più facile la creazione di PDF visivamente gradevoli .
Jinja2
Jinja2 è un potente motore di templating per Python che consente di generare contenuti dinamici incorporando espressioni Python, condizioni e cicli all’interno dei template. Questa guida ti guiderà attraverso diversi esempi dell’uso di Jinja2 in Python, da semplici sostituzioni di variabili a funzionalità avanzate come l’ereditarietà dei template.
Funzionalità principali di Jinja2
- Un motore di templating che può essere utilizzato in combinazione con WeasyPrint o ReportLab per generare dinamicamente contenuti HTML.
- Ideale per incorporare dati in template predefiniti.
- Installazione:
pip install jinja2
vedi esempi sulla pagina ufficiale della documentazione di Jinja2: https://jinja.palletsprojects.com/en/3.0.x/
pdfkit
pdfkit è una potente libreria Python che semplifica il processo di conversione del contenuto HTML in documenti PDF. Agisce come un wrapper per l’utilità wkhtmltopdf, sfruttando WebKit per rendere correttamente le pagine HTML in formato PDF. Questa guida ti guiderà attraverso diversi esempi e casi d’uso della generazione di PDF utilizzando pdfkit.
Funzionalità principali
- Un wrapper Python per wkhtmltopdf, che converte HTML in PDF.
- Richiede l’installazione di wkhtmltopdf a livello di sistema. https://wkhtmltopdf.org/downloads.html
Installazione:
# e assicurati che wkhtmltopdf sia installato.
Utilizzo base - Conversione di una stringa HTML in PDF
Puoi convertire una semplice stringa HTML in un file PDF utilizzando pdfkit.from_string():
import pdfkit
html_sample = """
<html>
<head><title>PDF di Esempio</title></head>
<body>
<h1>Questo è un titolo</h1>
<p>Prima riga.</p>
<p>Seconda riga.</p>
<p>Terza riga.</p>
<p>Quarta riga.</p>
</body>
</html>
"""
pdfkit.from_string(html_sample, 'output.pdf')
Questo genererà un file PDF denominato output.pdf nella directory corrente.
Conversione di un File HTML Locale in PDF
Se hai un file HTML archiviato localmente, utilizza pdfkit.from_file():
import pdfkit
pdfkit.from_file('local.html', 'sample.pdf')
Libreria PDF Reports (pdf-reports)
Creare report PDF utilizzando la libreria pdf-reports in Python può essere un modo potente per generare documenti professionali da modelli HTML o Pug. Questa libreria sfrutta componenti moderni tramite il framework Semantic UI e fornisce routine per incorporare tabelle, grafici e altri elementi nei tuoi PDF.
La libreria pdf-reports è progettata per creare report PDF visivamente gradevoli da modelli HTML o Pug. Supporta ufficialmente Python 3.x, ma può anche funzionare su Python 2.x con la versione appropriata di weasyprint. Questo la rende uno strumento versatile per generare documenti dinamici e ben strutturati in modo programmabile.
Funzionalità principali
- Componenti Moderni: Utilizza il framework Semantic UI per componenti moderni.
- Incorporamento di Elementi: Permette di incorporare tabelle, grafici e altri elementi nei PDF.
- Supporto per Template: Supporta template HTML e Pug per un design flessibile dei report.
Esempio di utilizzo di pdf-reports
Installazione:
pip install pdf-reports
Ecco un esempio base di come utilizzare la libreria pdf-reports:
from pdf_reports import PDFReport
# Definisci il file del template (template.pug)
template = """
doctype html
html
head
title= title
body
h1= title
p Questo è un report di esempio.
"""
# Crea un'istanza del report PDF
report = PDFReport(template)
# Imposta il contesto per il template
context = {
'title': 'Report di Esempio'
}
# Genera il PDF
pdf = report.generate(context, output='sample_report.pdf')
Svolgimento della generazione di PDF in Python
Python offre una gamma di potenti librerie per la generazione di report PDF. Che tu stia creando fatture, report aziendali o sintesi dei dati, questi strumenti ti permettono di automatizzare il processo, personalizzare i documenti e garantire la coerenza del branding. Scegli la libreria che meglio si adatta alle tue esigenze e inizia a creare PDF professionali oggi stesso!