Skip to content
Tutoriels
Python
PyPDF2: The Ultimate Python Library for PDF Manipulation

PyPDF2: La bibliothèque Python ultime pour la manipulation de PDF

PyPDF2 est une bibliothèque puissante, gratuite et open-source conçue pour manipuler des PDF en Python. C'est un outil polyvalent qui vous permet de diviser, fusionner, recadrer, transformer, chiffrer et déchiffrer des fichiers PDF facilement. PyPDF2 prend en charge les versions de PDF 1.4 à 1.7 et ne nécessite aucune dépendance externe autre que la bibliothèque standard de Python, ce qui en fait un choix accessible et pratique pour les développeurs Python travaillant avec des PDF.

Cette bibliothèque n'est pas seulement robuste, mais aussi sécurisée, offrant une gamme de fonctionnalités qui garantissent l'intégrité et la confidentialité de vos fichiers PDF. De l'ajout de mots de passe aux PDF à la récupération de texte et de métadonnées à partir d'eux, PyPDF2 offre une suite complète d'outils pour la manipulation de PDF. Dans cet article, nous explorerons les capacités de PyPDF2, en fournissant des explications détaillées, des définitions et des exemples pour vous aider à tirer le meilleur parti de cette bibliothèque.

Vous voulez rapidement créer une visualisation de données à partir d'un dataframe Python Pandas sans code?

PyGWalker est une bibliothèque Python pour l'analyse exploratoire de données avec une visualisation. PyGWalker (opens in a new tab) peut simplifier votre flux de travail d'analyse et de visualisation de données dans Jupyter Notebook, en transformant votre dataframe pandas (et le dataframe polars) en une interface utilisateur de type Tableau pour l'exploration visuelle.

PyGWalker pour la visualisation de données (opens in a new tab)

Qu'est-ce que PyPDF2 ?

PyPDF2 est une bibliothèque purement en Python capable de diviser, fusionner, recadrer et transformer les pages de fichiers PDF. Elle peut également ajouter des données personnalisées, des options d'affichage et des mots de passe aux fichiers PDF. PyPDF2 peut également extraire du texte et des métadonnées à partir de fichiers PDF, ce qui en fait un outil complet pour la manipulation de PDF.

La bibliothèque est open-source, ce qui signifie qu'elle est librement disponible pour quiconque souhaite l'utiliser, la modifier et la distribuer. Cela en fait un choix populaire parmi les développeurs qui ont besoin de travailler avec des PDF en Python. PyPDF2 est également indépendante de la plateforme, vous pouvez donc l'utiliser quel que soit que vous travailliez sur une machine Windows, Mac ou Linux.

Installation et utilisation de PyPDF2

L'installation de PyPDF2 est simple et peut être réalisée à l'aide de pip, l'installateur de packages pour Python. PyPDF2 nécessite Python 3.6 ou une version ultérieure pour fonctionner. Voici comment vous pouvez installer PyPDF2 à l'aide de pip :

pip install PyPDF2

Vous pouvez également installer PyPDF2 en utilisant Anaconda, une distribution Python populaire pour la science des données et l'apprentissage automatique. Voici comment :

pip install git+https://github.com/py-pdf/PyPDF2.git

Une fois installée, vous pouvez importer la bibliothèque PyPDF2 dans votre script Python comme ceci :

import PyPDF2

Pour vérifier la version de PyPDF2 que vous utilisez, vous pouvez utiliser l'attribut __version__ :

PyPDF2.__version__

Travailler avec des PDF en utilisant PyPDF2

Une fois que vous avez installé PyPDF2, vous pouvez commencer à travailler avec des PDF. Passons en revue certaines des opérations courantes que vous pourriez avoir besoin d'effectuer.

Lire un PDF

Pour lire un PDF, vous devez d'abord ouvrir le fichier en mode lecture binaire ('rb'), puis créer un objet PdfFileReader :

inputFile = "chemin_vers_votre_fichier_pdf.pdf"
pdf = open(inputFile, "rb")
pdf_reader = PyPDF2.PdfFileReader(pdf)

Vous pouvez vérifier le nombre de pages dans le PDF en utilisant l'attribut numPages :

totalPages = pdf_reader.numPages
print(totalPages)

Extraire du texte d'un PDF

Pour extraire du texte d'un PDF, vous pouvez utiliser la méthode extractText() de la classe PageObject. Tout d'abord, vous devez obtenir un objet PageObject représentant une page spécifique du PDF :

page = pdf_reader.getPage(0)  ## Obtenir la première page

Ensuite, vous pouvez extraire le texte de cette page :

print(page.extractText())

Cela affichera le contenu texte de la première page du PDF dans la console. Notez que extractText() peut ne pas toujours fonctionner parfaitement, en fonction de la complexité du PDF et de l'encodage de son texte.

Diviser les pages PDF

Une des fonctionnalités puissantes de PyPDF2 est la capacité à diviser les pages d'un PDF. Cela peut être fait en utilisant la méthode getPage() de l'objet PdfFileReader, qui récupère une page par son numéro. Voici un exemple de comment diviser la première page d'un PDF :

## Ouvrir le PDF
with open('chemin_vers_votre_fichier_pdf.pdf', 'rb') as file:
    reader = PyPDF2.PdfFileReader(file)
    writer = PyPDF2.PdfFileWriter()
 
    ## Obtenir la première page
    first_page = reader.getPage(0)
 
    ## Ajouter la page à l'objet PdfFileWriter
    writer.addPage(first_page)
 
    ## Écrire la page dans un nouveau fichier
    with open('output.pdf', 'wb') as output_pdf:
        writer.write(output_pdf)

Dans cet exemple, output.pdf sera un nouveau fichier PDF ne contenant que la première page du PDF original.

Fusionner des PDF

PyPDF2 vous permet également de fusionner plusieurs PDF en un seul. Cela peut être fait en utilisant la classe PdfFileMerger. Voici un exemple :

merger = PyPDF2.PdfFileMerger()
 
## Liste des PDF à fusionner
pdfs = ['fichier1.pdf', 'fichier2.pdf', 'fichier3.pdf']
 
for pdf in pdfs:
    merger.append(pdf)
 
merger.write("merged.pdf")
merger.close()

Dans cet exemple, merged.pdf sera un nouveau fichier PDF contenant toutes les pages de fichier1.pdf, fichier2.pdf et fichier3.pdf, dans cet ordre.

Ajouter des mots de passe aux PDF

PyPDF2 propose une manière simple d'ajouter des mots de passe à vos fichiers PDF pour une sécurité renforcée. Cela peut être fait en utilisant la méthode encrypt() de l'objet PdfFileWriter. Voici un exemple :

## Ouvrir le PDF
with open('chemin_vers_votre_fichier_pdf.pdf', 'rb') as file:
    reader = PyPDF2.PdfFileReader(file)
    writer = PyPDF2.PdfFileWriter()
 
    ## Copier toutes les pages du PDF original vers le nouveau
    for pageNum in range(reader.numPages):
        page = reader.getPage(pageNum)
        writer.addPage(page)
 
    ## Chiffrer le nouveau PDF
    writer.encrypt('votre_mot_de_passe')
 
    ## Écrire le PDF chiffré dans un nouveau fichier
    with open('pdf_chiffre.pdf', 'wb') as output_pdf:
        writer.write(output_pdf)

Dans cet exemple, "pdf_chiffre.pdf" sera un nouveau fichier PDF qui est une copie du PDF original, mais chiffré avec le mot de passe "votre_mot_de_passe".

Conversion des PDF en images

Bien que PyPDF2 ne supporte pas directement la conversion des PDF en images, il peut être utilisé en combinaison avec d'autres bibliothèques telles que PDF2Image pour y parvenir. Voici un exemple :

from pdf2image import convert_from_path
 
## Convertir le PDF en une liste d'images
images = convert_from_path('chemin_vers_votre_fichier_pdf.pdf')
 
## Enregistrer les images dans des fichiers
for i, image in enumerate(images):
    image.save(f'sortie{i}.png', 'PNG')

Dans cet exemple, chaque page du PDF est convertie en une image PNG et enregistrée dans un fichier distinct.

FAQ

Quelles versions de PDF sont supportées par PyPDF2 ?

PyPDF2 prend en charge les versions PDF 1.4 à 1.7. Cela couvre une large gamme de fichiers PDF, ce qui en fait un choix polyvalent pour la manipulation de PDF en Python.

PyPDF2 a-t-il des dépendances ?

Non, PyPDF2 n'a pas de dépendances autres que la bibliothèque standard de Python. Cela facilite l'installation et l'utilisation sur n'importe quel système disposant de Python.

Quelle version de Python est requise pour exécuter PyPDF2 ?

PyPDF2 nécessite Python 3.6 ou une version ultérieure pour s'exécuter. Cela garantit la compatibilité avec les fonctionnalités Python modernes et améliore les performances et la sécurité globales de la bibliothèque.