Ultimo aggiornamento: 29 Gen, 2025

In questo articolo, ti guideremo su come lavorare con file PDF usando Python. Per questo utilizzeremo la libreria pypdf.
Utilizzando la libreria pypdf, dimostreremo come eseguire le seguenti operazioni in Python:
- Estrarre testo dai PDF
- Ruotare le pagine dei PDF
- Unire più PDF
- Dividere i PDF in file separati
- Aggiungere filigrane alle pagine dei PDF
Nota: Questo articolo copre molti dettagli preziosi, quindi sentiti libero di saltare alle sezioni che più ti interessano! Il contenuto è organizzato per una facile navigazione, così puoi rapidamente concentrarti su ciò che è più rilevante per te.

Codici di esempio
Puoi scaricare tutto il codice di esempio utilizzato in questo articolo dal seguente link. Include il codice, i file di input e i file di output.
Installare pypdf
Per installare pypdf, basta eseguire il seguente comando nel terminale o prompt dei comandi:
pip install pypdf
Nota: Il comando sopra è sensibile al maiuscolo/minuscolo.
1. Estrarre testo da un file PDF usando Python
Spiegazione del codice
1. Creazione di un oggetto Lettore PDF
reader = PdfReader(pdf_file)
PdfReader(pdf_file)
carica il file PDF in un oggetto lettore.- Questo oggetto permette l’accesso alle pagine e al loro contenuto.
2. Scorrere le pagine
for page_number, page in enumerate(reader.pages, start=1):
reader.pages
restituisce un elenco di pagine nel PDF.enumerate(..., start=1)
assegna un numero di pagina partendo da 1.
3. Stampa del testo estratto
print(f"Pagina {page_number}:")
print(page.extract_text())
print("-" * 50) # Separatore per la leggibilità
page.extract_text()
estrae il contenuto di testo dalla pagina corrente.- Lo script stampa il testo estratto insieme al numero di pagina.
"-" * 50
stampa una linea separatrice (--------------------------------------------------
) per una migliore leggibilità.
File PDF di input utilizzato nel codice
- File di input: Link per il download
Output del codice
2. Ruotare le pagine di un PDF usando Python
Spiegazione del codice
Il codice ruota essenzialmente la prima pagina di 90° in senso orario e salva il PDF modificato senza alterare le altre pagine.
1. Importare le classi richieste
from pypdf import PdfReader, PdfWriter
PdfReader
: Legge il PDF di input.PdfWriter
: Crea un nuovo PDF con le modifiche.
2. Definire i percorsi dei file di input e output
input_pdf = "pdf-to-rotate/input.pdf"
output_pdf = "pdf-to-rotate/rotated_output.pdf"
- Lo script legge da
input.pdf
e salva il file modificato comerotated_output.pdf
.
3. Leggere il PDF e creare un oggetto Writer
reader = PdfReader(input_pdf)
writer = PdfWriter()
reader
carica il PDF esistente.writer
è utilizzato per memorizzare le pagine modificate.
4. Ruotare la prima pagina di 90 gradi
page = reader.pages[0]
page.rotate(90) # Ruota di 90 gradi in senso orario
writer.add_page(page)
- Estrae la pagina 1, la ruota di 90 gradi e la aggiunge al nuovo PDF.
5. Aggiungere le rimanenti pagine senza modifiche
for i in range(1, len(reader.pages)):
writer.add_page(reader.pages[i])
- Scorre attraverso le restanti pagine e le aggiunge così come sono.
6. Salvare il nuovo PDF
with open(output_pdf, "wb") as file:
writer.write(file)
- Apre
rotated_output.pdf
in modalità scrittura binaria e salva il nuovo PDF.
7. Stampa di conferma
print(f"Pagina ruotata salvata in {output_pdf}")
- Visualizza un messaggio di successo.
File PDF di input utilizzato nel codice e relativo output ruotato
- File PDF di input: Link per il download
- File PDF ruotato di output: Link per il download
Screenshot
3. Unire file PDF usando Python
Questo script Python dimostra come unire più file PDF da una directory in un singolo PDF usando la libreria PyPDF.
Spiegazione del codice
- Questo script unisce automaticamente tutti i file PDF trovati nella directory specificata (
pdfs-to-merge
) in un unico file di output (merged_output.pdf
). - Si assicura che la directory di output esista e aggiunge le pagine di ciascun PDF nell’ordine in cui sono elencati.
- Fornisce il file unito finale nella sottodirectory
output-dir
.
Descrizione del codice
1. Importare le librerie
import os
from pypdf import PdfReader, PdfWriter
os
: Utilizzato per interagire con il sistema di file, come la lettura delle directory e la gestione dei percorsi dei file.PdfReader
: Legge il contenuto di un file PDF.PdfWriter
: Crea e scrive un nuovo file PDF.
2. Definire la directory e il file di output
directory = "pdfs-to-merge"
output_file = "output-dir/merged_output.pdf"
directory
: Specifica la cartella dove sono memorizzati i file PDF.output_file
: Definisce il percorso e il nome del file PDF unito di output.
3. Creare la directory di output se non esiste
os.makedirs(os.path.join(directory, "output-dir"), exist_ok=True)
- Questo assicura che la directory di output esista, e se non esiste, la crea.
4. Creare un oggetto PdfWriter
writer = PdfWriter()
writer
è utilizzato per raccogliere e combinare tutte le pagine dai PDF.
5. Iterare su tutti i file PDF nella directory
for file_name in sorted(os.listdir(directory)):
if file_name.endswith(".pdf"):
file_path = os.path.join(directory, file_name)
print(f"Aggiungendo: {file_name}")
- Questo ciclo va attraverso tutti i file nella directory specificata, controllando per i file con l’estensione
.pdf
. Usasorted()
per elaborarli in ordine alfabetico.
6. Leggere ciascun PDF e aggiungere pagine al Writer
reader = PdfReader(file_path)
writer.append(reader)
- Per ciascun PDF,
PdfReader
legge il file, e poi tutte le pagine di quel PDF sono aggiunte awriter
.
7. Scrivere il PDF unito in un file di output
output_path = os.path.join(directory, output_file)
with open(output_path, "wb") as output_pdf:
writer.write(output_pdf)
- Dopo aver raccolto tutte le pagine,
writer.write()
scrive il PDF unito nel percorso specificato di output.
8. Stampa di conferma
print(f"PDF unito salvato come: {output_path}")
- Stampa un messaggio di successo confermando la posizione del file PDF unito salvato.
File PDF di input utilizzati nel codice e PDF unito di output
- File PDF di input: Link per il download
- PDF unito di output: Link per il download
4. Dividere un PDF usando Python
Spiegazione del codice
Lo script Python sopra divide un PDF in pagine separate utilizzando la libreria PyPDF. Prima si assicura che la directory di output esista, poi legge il file PDF di input. Lo script scorre attraverso ciascuna pagina, crea un nuovo oggetto PdfWriter e salva ciascuna pagina come un singolo file PDF. I file di output sono nominati in sequenza (es. page_1.pdf, page_2.pdf) e memorizzati nella cartella output-dir
. Infine, stampa un messaggio di conferma per ciascun file creato e notifica quando il processo è completato.
File PDF di input e file di output divisi
- File PDF di input: Link per il download
- File di output divisi: Link per il download
5. Aggiungere una filigrana a un PDF usando Python
Puoi aggiungere una filigrana a un PDF usando la libreria PyPDF sovrapponendo un PDF di filigrana a un PDF esistente. Assicurati che il PDF di filigrana abbia solo una pagina in modo che si applichi correttamente a ciascuna pagina del PDF principale.
Spiegazione del codice
Lo script Python sopra legge un PDF di input, estrae un PDF di filigrana di una pagina, sovrappone la filigrana su ciascuna pagina del PDF di input e salva il PDF filigranato finale.
Descrizione del codice
Ecco una breve spiegazione di ciascuna parte:
1. Importare le classi richieste
from pypdf import PdfReader, PdfWriter
PdfReader
è usato per leggere i PDF esistenti.PdfWriter
è usato per creare e scrivere un nuovo PDF.
2. Definire i percorsi dei file
input_pdf = "pdf-to-watermark/input.pdf"
watermark_pdf = "pdf-to-watermark/watermark.pdf"
output_pdf = "pdf-to-watermark/output_with_watermark.pdf"
input_pdf
: Il PDF originale al quale sarà aggiunta la filigrana.watermark_pdf
: Un PDF separato di una sola pagina che serve da filigrana.output_pdf
: Il file di output che conterrà le pagine filigranate.
3. Leggere i PDF
reader = PdfReader(input_pdf)
watermark = PdfReader(watermark_pdf)
reader
: Legge il PDF di input.watermark
: Legge il PDF di filigrana.
4. Creare un oggetto Writer
writer = PdfWriter()
- Questo sarà usato per creare il PDF filigranato finale.
5. Estrarre la pagina della filigrana
watermark_page = watermark.pages[0]
- Si presume che il PDF di filigrana abbia solo una pagina, che viene utilizzata per sovrapporsi su tutte le pagine.
6. Scorrere le pagine del PDF di input e unire la filigrana
for page in reader.pages:
# Unire la filigrana con la pagina corrente
page.merge_page(watermark_page)
# Aggiungere la pagina unita al Writer
writer.add_page(page)
- Itera attraverso ciascuna pagina di
input_pdf
. merge_page(watermark_page)
sovrappone la filigrana sopra la pagina corrente.- Aggiunge la pagina modificata al
writer
.
7. Salvare il PDF filigranato
with open(output_pdf, "wb") as output_file:
writer.write(output_file)
- Scrive le pagine modificate in un nuovo file PDF.
8. Stampa di conferma
print(f"PDF filigranato salvato come: {output_pdf}")
- Stampa il percorso del file di output per conferma.
File PDF di input, PDF di filigrana e PDF di output filigranato
- File PDF di input: Link per il download
- File PDF di filigrana: Link per il download
- File PDF di output filigranato: Link per il download
Screenshot
Conclusione
In questa guida, abbiamo esplorato le operazioni essenziali sui PDF in Python, inclusa l’estrazione di testo, la rotazione delle pagine, l’unione, la divisione e l’aggiunta di filigrane. Con queste competenze, ora puoi costruire il tuo gestore di file PDF e automatizzare vari compiti sui PDF in modo efficiente.