Guida Didattica · Automazione Office con Python

Leggere e Generare PDF con Python

Estrai testo da PDF esistenti e crea nuovi documenti PDF da zero, con pypdf e reportlab.

0 di 5 passaggi completati

01Fondamenti

Due compiti, due librerie

Lavorare con i PDF in Python richiede in genere due strumenti diversi, perché "leggere" e "creare" un PDF sono compiti molto diversi tra loro.

LibreriaCompito
pypdfLeggere, unire, dividere ed estrarre testo da PDF esistenti
reportlabCreare nuovi PDF da zero: testo, tabelle, immagini, grafici

Il tuo primo PDF letto

from pypdf import PdfReader

lettore = PdfReader("documento.pdf")
print(len(lettore.pages))          # numero di pagine
print(lettore.pages[0].extract_text())  # testo della prima pagina

02Concetti Chiave

📖 PdfReader ed estrazione testo▶

PdfReader apre un PDF esistente in sola lettura. Ogni pagina è un oggetto da cui puoi estrarre il testo con .extract_text().

✂️ Unire e dividere PDF▶

pypdf permette di unire più file PDF in uno solo, o di estrarne solo alcune pagine per creare un nuovo file più piccolo.

from pypdf import PdfWriter writer = PdfWriter() writer.append("file1.pdf") writer.append("file2.pdf") writer.write("unito.pdf")
✍️ Creare PDF con reportlab▶

reportlab lavora "disegnando" ogni elemento a coordinate precise sulla pagina (come un canvas), oppure tramite un sistema di "storia" (Platypus) che dispone automaticamente paragrafi e tabelle in ordine.

from reportlab.pdfgen import canvas c = canvas.Canvas("output.pdf") c.drawString(100, 750, "Ciao, mondo!") c.save()
📐 Coordinate e unità▶

In reportlab l'origine (0,0) è in basso a sinistra della pagina, non in alto a sinistra come si potrebbe pensare: è una fonte comune di confusione per chi inizia.

📊 Tabelle con Platypus▶

Platypus (il modulo di alto livello di reportlab) permette di costruire documenti complessi con tabelle e paragrafi senza calcolare manualmente ogni coordinata.

from reportlab.platypus import SimpleDocTemplate, Table doc = SimpleDocTemplate("tabella.pdf") tabella = Table([["Nome", "Voto"], ["Anna", "8"]]) doc.build([tabella])

03Checklist Pratica

Spunta ogni passaggio man mano che lo completi: sbloccherai l'attestato di questa guida al termine.

Esempio per il punto 1

from pypdf import PdfReader

lettore = PdfReader("documento.pdf")
print(len(lettore.pages))
1. Apri un PDF e conta le pagineUsa PdfReader() su un file PDF esistente e stampa il numero di pagine, come nell'esempio sopra.

Esempio per il punto 2

testo = lettore.pages[0].extract_text()
print(testo)
2. Estrai il testo dalla prima paginaUsa .extract_text() come nell'esempio sopra.

Esempio per il punto 3

from reportlab.pdfgen import canvas

c = canvas.Canvas("attestato.pdf")
c.drawString(100, 750, "Attestato di partecipazione")
c.save()
3. Crea un PDF con del testoUsa canvas.Canvas() e .drawString() come nell'esempio sopra.

Esempio per il punto 4

from reportlab.platypus import SimpleDocTemplate, Table

doc = SimpleDocTemplate("tabella.pdf")
dati = [["Nome", "Voto"], ["Anna", "8"], ["Luca", "6"]]
tabella = Table(dati)
doc.build([tabella])
4. Crea un PDF con una tabellaUsa SimpleDocTemplate e Table di Platypus, come nell'esempio sopra.
5. Completa il quiz di verificaScendi in fondo alla guida e rispondi correttamente ad almeno l'80% delle domande.

04Glossario Interattivo

Tocca ogni termine per vederne la definizione.

05Quiz di Verifica

06Esercitazioni Pratiche

Esercizio 1

L'estrattore di testo

Apri un PDF a tua scelta (anche un documento scaricato da internet), conta le pagine ed estrai il testo di ciascuna, salvandolo in un file .txt.

⏱ 20 minuti📦 File .txt con il testo estratto🖥️ Individuale
Esercizio 2

Attestato PDF con tabella riepilogativa

Usa reportlab per creare un PDF con un titolo e una tabella che riassuma 5 argomenti studiati con relativo punteggio del quiz.

⏱ 25 minuti📦 File .pdf generato🖥️ Individuale
Esercizio 3

Trova l'errore: il testo fuori pagina

Questo codice scrive del testo che risulta invisibile nel PDF: c.drawString(100, -50, "Testo"). Spiega perché una coordinata y negativa posiziona il testo fuori dall'area visibile della pagina, ricordando dove si trova l'origine (0,0) in reportlab.

⏱ 10 minuti📦 Spiegazione scritta + coordinate corrette🖥️ Individuale o in coppia

🎓 Attestato di completamento

Completa tutti i 5 passaggi della checklist per sbloccare il tuo attestato in PDF.

0 / 5 passaggi completati