1. Unire PDF con PyPDF2
Perché unire i file PDF
Prima di tutto, cerchiamo di capire perché c'è bisogno di unire i file PDF. Come si dice: "Un PDF è meglio di dieci!". In un ambiente di lavoro, potresti avere report, risultati di ricerche, documentazione tecnica o presentazioni forniti come file separati. Passare continuamente da uno all'altro non è solo scomodo, ma anche rischioso: potresti dimenticare qualcosa. Unendo tutti i file in un documento unico, semplifichi il lavoro con queste informazioni e crei un approccio più strutturato per la loro analisi e diffusione.
Inoltre, unire file PDF è comodo per l'archiviazione successiva, la creazione di un report finale unico o la fusione di molte versioni di un documento per monitorare le modifiche. Insomma, ci sono un sacco di possibilità!
Fondamenti di utilizzo di PyPDF2 per unire i PDF
Per cominciare, utilizziamo le basi del lavoro con PyPDF2. Creeremo uno script che unirà più file PDF in uno solo. Ovviamente, il codice sarà accompagnato da commenti per aiutarti a capire cosa succede ad ogni passaggio.
import PyPDF2
# Creiamo un oggetto PdfMerger dalla libreria PyPDF2
pdf_merger = PyPDF2.PdfMerger()
# Lista dei nostri documenti PDF che vogliamo unire
pdf_files = ['document1.pdf', 'document2.pdf', 'document3.pdf']
# Ciclo per aggiungere ogni file all'oggetto PdfMerger
for file in pdf_files:
pdf_merger.append(file)
# Salviamo il risultato in un nuovo file PDF
output_filename = 'merged_document.pdf'
with open(output_filename, 'wb') as output_file:
pdf_merger.write(output_file)
# Chiudiamo l'oggetto PdfMerger per liberare risorse
pdf_merger.close()
print(f"PDF unito creato: {output_filename}")
Ordine e struttura del documento unito
Ora che abbiamo imparato a unire i documenti PDF, dobbiamo pensare all'ordine delle pagine. Ricorda che PyPDF2 aggiunge le pagine nell'ordine in cui hai passato i file al metodo .append()
. Quindi, l'ordine nella lista pdf_files
influenzerà l'ordine nel documento finale.
2. Unire singole pagine
Se vuoi non unire interi documenti ma costruire un documento finale dalle loro parti, devi usare la classe PdfWriter
invece di PdfMerger
. Ecco un esempio:
import PyPDF2
# Lista dei file PDF da unire
pdf_files = ["file1.pdf", "file2.pdf", "file3.pdf"]
# Creazione di un oggetto PdfWriter per scrivere il PDF unito
pdf_writer = PyPDF2.PdfWriter()
# Per ogni file PDF
for pdf_file in pdf_files:
with open(pdf_file, "rb") as file:
pdf_reader = PyPDF2.PdfReader(file)
# Aggiungiamo ogni pagina al PdfWriter
for page_num in range(len(pdf_reader.pages)):
# Qui puoi saltare le pagine che non vuoi aggiungere
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# Salvataggio del PDF unito
with open("merged_document.pdf", "wb") as output_file:
pdf_writer.write(output_file)
Come funziona questo codice?
- Creiamo una lista di file: La lista
pdf_files
contiene i percorsi ai documenti PDF che vogliamo unire. - Inizializziamo PdfWriter:
pdf_writer
viene usato per creare un nuovo file PDF. - Per ogni file: Ogni file PDF viene aperto in modalità lettura.
- Aggiungiamo le pagine: Tutte le pagine del file vengono aggiunte una ad una all'oggetto
pdf_writer
usandoadd_page()
. - Salviamo il risultato: Dopo aver aggiunto tutte le pagine, il nuovo file PDF viene salvato come
merged_document.pdf
.
3. Stilizzare il nuovo documento
Aggiungere segnalibri e indice
Cosa fare se il tuo documento unito è troppo grande e difficile da navigare? In questo caso, i segnalibri ci vengono in aiuto! PyPDF2 consente di aggiungere segnalibri di base per rendere la navigazione del documento più facile. Aggiungiamo segnalibri per ogni documento che uniamo.
pdf_merger = PyPDF2.PdfMerger()
# Indice pagina per i segnalibri
page_offset = 0
for file in pdf_files:
# Leggiamo il documento attuale
pdf_reader = PyPDF2.PdfReader(file)
# Aggiungiamo il documento al PdfMerger
pdf_merger.append(file)
# Aggiungiamo un segnalibro con il nome del file
pdf_merger.add_bookmark(file, page_offset)
# Aggiorniamo l'offset delle pagine
page_offset += len(pdf_reader.pages)
with open(output_filename, 'wb') as output_file:
pdf_merger.write(output_file)
pdf_merger.close()
Questo trucchetto ti aiuterà a mantenere la calma ed evitare di perderti in un mare di documenti PDF uniti.
Aggiornare i metadata del file unito
Dopo l'unione, puoi aggiungere o modificare i metadata del documento, come autore, titolo e parole chiave.
import PyPDF2
pdf_files = ["file1.pdf", "file2.pdf"]
pdf_writer = PyPDF2.PdfWriter()
for pdf_file in pdf_files:
with open(pdf_file, "rb") as file:
pdf_reader = PyPDF2.PdfReader(file)
for page_num in range(len(pdf_reader.pages)):
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# Aggiunta dei metadata
pdf_writer.add_metadata({
"/Title": "Documento unito",
"/Author": "Ivan Ivanov",
"/Subject": "Rapporto di vendite"
})
# Salvataggio del file unito
with open("merged_with_metadata.pdf", "wb") as output_file:
pdf_writer.write(output_file)
Questo codice aggiunge metadata che aiutano a identificare e strutturare il documento.
GO TO FULL VERSION