Python: effettuare il merge di file PDF

Python: effettuare il merge di file PDF

In questo articolo vedremo come effettuare il merge di una serie di file PDF con Python.

Il merge, o concatenazione/fusione, consiste nel generare un unico file PDF finale contenente tutti i contenuti dei file PDF presenti nell'elenco iniziale.

Il modulo PyPDF2 fornisce tra le sue diverse funzionalità di gestione dei file PDF anche questa possibilità.

import PyPDF2

def merge_pdf_files(pdf_files = None, target_pdf_file = 'merged.pdf'):
    if pdf_files is None:
        return False
    merger = PyPDF2.PdfFileMerger()
    for pdf_file in pdf_files:
        try:
            merger.append(PyPDF2.PdfFileReader(pdf_file, 'rb'))
        except ValueError:
            return False
        except Exception:
            return False
     merger.write(target_pdf_file)
     merger.close()
     return True            
    

La nostra funzione crea un'istanza della classe PdfFileMerger e quindi effettua un loop sulla lista di file PDF in input invocando il metodo append() della già citata classe. Tutto il nostro codice può sollevare errori, quindi è stato racchiuso in un blocco try/except.

Gli errori più comuni che possono verificarsi riguardano la struttura del documento PDF esaminato, le sue dimensioni ed il fatto che ciascuna voce della lista di file PDF corrisponda effettivamente ad un file esistente e accessibile in lettura nel file system.

Terminato il ciclo, scriviamo il buffer creato nel file di destinazione e liberiamo le risorse in uso utilizzando il metodo close(). La caratteristica fondamentale di PyPDF2 da tenere presente è che tale libreria effettua anche una validazione interna dei file esaminati. Se ad esempio la codifica dei caratteri presenta degli errori, le operazioni effettuate falliranno. I migliori risultati si ottengono con file PDF in formato standard e con dimensioni non eccessive.

Torna su