1. Fusionner des fichiers PDF avec PyPDF2
Pourquoi fusionner des fichiers PDF
Tout d'abord, voyons pourquoi il peut être nécessaire de fusionner des fichiers PDF. Après tout, comme on dit, "Un PDF vaut mieux que dix !". Dans un environnement professionnel, vous pouvez avoir des rapports, des résultats de recherche, des documentations techniques ou des présentations fournis sous forme de fichiers distincts. Passer constamment de l'un à l'autre n'est pas seulement gênant mais aussi risqué — on peut facilement oublier quelque chose. En fusionnant tous les fichiers en un seul document, vous simplifiez le travail avec ces données et créez une approche plus structurée pour leur analyse et diffusion.
De plus, fusionner des fichiers PDF est pratique pour les archiver, créer un rapport final unique ou assembler différentes versions d'un document pour suivre les modifications. Bref, les possibilités sont infinies !
Les bases de l'utilisation de PyPDF2 pour fusionner des PDF
Pour commencer, utilisons les bases de PyPDF2. On va écrire un script qui fusionne plusieurs fichiers PDF en un seul. Bien sûr, le code sera accompagné de commentaires pour que vous compreniez ce qui se passe à chaque étape.
import PyPDF2
# Crée un objet PdfMerger de la bibliothèque PyPDF2
pdf_merger = PyPDF2.PdfMerger()
# Liste de nos fichiers PDF que nous voulons fusionner
pdf_files = ['document1.pdf', 'document2.pdf', 'document3.pdf']
# Boucle pour ajouter chaque fichier à l'objet PdfMerger
for file in pdf_files:
pdf_merger.append(file)
# Enregistre le résultat dans un nouveau fichier PDF
output_filename = 'merged_document.pdf'
with open(output_filename, 'wb') as output_file:
pdf_merger.write(output_file)
# Ferme l'objet PdfMerger pour libérer des ressources
pdf_merger.close()
print(f"PDF fusionné créé : {output_filename}")
Ordre et structure du document fusionné
Maintenant que nous savons comment fusionner des documents PDF, il est important de réfléchir à l'ordre des pages. Rappelez-vous que PyPDF2 ajoute les pages dans l'ordre dans lequel vous avez passé les fichiers à la méthode .append(). Ainsi, l'ordre dans la liste pdf_files affecte l'ordre dans le document final.
2. Fusionner des pages individuelles
Si vous voulez non pas fusionner des documents, mais créer un document final à partir des parties de ceux-ci, vous devez utiliser la classe PdfWriter au lieu de PdfMerger. Exemple :
import PyPDF2
# Liste des fichiers PDF à fusionner
pdf_files = ["file1.pdf", "file2.pdf", "file3.pdf"]
# Création d'un objet PdfWriter pour écrire le PDF fusionné
pdf_writer = PyPDF2.PdfWriter()
# Parcourir chaque fichier PDF
for pdf_file in pdf_files:
with open(pdf_file, "rb") as file:
pdf_reader = PyPDF2.PdfReader(file)
# Ajoute chaque page dans PdfWriter
for page_num in range(len(pdf_reader.pages)):
# Ici vous pouvez ignorer les pages que vous ne voulez pas ajouter
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# Enregistrer le PDF fusionné
with open("merged_document.pdf", "wb") as output_file:
pdf_writer.write(output_file)
Comment fonctionne ce code ?
- Créer une liste de fichiers : La liste
pdf_filescontient les chemins vers les documents PDF à fusionner. - Initialiser PdfWriter :
pdf_writerest utilisé pour créer un nouveau fichier PDF. - Parcourir chaque fichier : Chaque fichier PDF est ouvert en mode lecture.
- Ajouter des pages : Toutes les pages du fichier sont ajoutées une par une à l'objet
pdf_writeravecadd_page(). - Enregistrer le résultat : Après avoir ajouté toutes les pages, le nouveau fichier PDF est écrit dans
merged_document.pdf.
3. Styliser le nouveau document
Ajouter des signets et une table des matières
Que faire si votre document fusionné devient trop grand et qu'il est difficile de s'y retrouver ? Dans ce cas, les signets viennent à votre secours ! PyPDF2 permet d'ajouter des signets de base pour faciliter la navigation dans le document. Ajoutons des signets pour chaque document que nous fusionnons.
pdf_merger = PyPDF2.PdfMerger()
# Index de page pour les signets
page_offset = 0
for file in pdf_files:
# Lire le document actuel
pdf_reader = PyPDF2.PdfReader(file)
# Ajouter le document au PdfMerger
pdf_merger.append(file)
# Ajouter un signet avec le nom du fichier
pdf_merger.add_bookmark(file, page_offset)
# Mettre à jour le décalage des pages
page_offset += len(pdf_reader.pages)
with open(output_filename, 'wb') as output_file:
pdf_merger.write(output_file)
pdf_merger.close()
Ce petit truc vous aide à garder votre calme et à éviter de vous noyer dans une mer de documents PDF.
Mettre à jour les métadonnées du fichier fusionné
Après avoir fusionné, il est possible d'ajouter ou de modifier les métadonnées d'un document, telles que l'auteur, le titre et les mots-clés.
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)
# Ajout des métadonnées
pdf_writer.add_metadata({
"/Title": "Document fusionné",
"/Author": "Ivan Ivanov",
"/Subject": "Rapport des ventes"
})
# Enregistrement du fichier fusionné
with open("merged_with_metadata.pdf", "wb") as output_file:
pdf_writer.write(output_file)
Ce code ajoute des métadonnées qui aident à identifier et à structurer le document.
GO TO FULL VERSION