CodeGym /Corsi /Python SELF IT /Unire più file PDF in un unico documento

Unire più file PDF in un unico documento

Python SELF IT
Livello 43 , Lezione 3
Disponibile

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.

Python

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:

Python

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?

  1. Creiamo una lista di file: La lista pdf_files contiene i percorsi ai documenti PDF che vogliamo unire.
  2. Inizializziamo PdfWriter: pdf_writer viene usato per creare un nuovo file PDF.
  3. Per ogni file: Ogni file PDF viene aperto in modalità lettura.
  4. Aggiungiamo le pagine: Tutte le pagine del file vengono aggiunte una ad una all'oggetto pdf_writer usando add_page().
  5. 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.

Python

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.

Python

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.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION