1. Description de la bibliothèque PyPDF2
PyPDF2 est une bibliothèque Python qui permet de manipuler des fichiers PDF. Elle offre des fonctionnalités pour extraire du texte, diviser et fusionner des fichiers PDF, ajouter des pages, chiffrer des fichiers, extraire des métadonnées et bien plus encore. PyPDF2 est relativement simple à utiliser et est largement utilisé pour des tâches de manipulation de fichiers PDF.
2. Caractéristiques principales de PyPDF2
- Extraction de texte : Permet d'extraire le texte d'un fichier PDF, page par page.
- Manipulation des pages : Possibilité d'ajouter, supprimer ou réorganiser des pages dans un fichier PDF.
- Fusion et division : Permet de fusionner plusieurs fichiers PDF en un seul ou de diviser un fichier PDF en plusieurs fichiers.
- Protection des fichiers : Possibilité de chiffrer des fichiers PDF avec un mot de passe pour limiter l'accès.
- Extraction des métadonnées : Permet de récupérer les métadonnées (auteurs, titre, etc.) associées au PDF.
- Watermark : Possibilité d'ajouter des filigranes (watermark) aux pages du PDF.
- Rotation : Permet de faire pivoter les pages du PDF.
3. Installation
afin de pouvoir convertir un fichier PDF en fichier Word, il faut au préalable installer la bibliothèque PyPDF. A cet effet nous pouvons utiliser simplement l'utilitaire pip:
1 |
pip install PyPDF2 python-docx |
4. Exemples d'usage de la bibliothèque PyPDF
Nous allons coder un exemple simple qui prend en entrée un fichier PDF et qui renvoie à la sortie le fichier converti en un document Word. Nous allons procéder de la façons suivante étape par étape:
- Importer la bibliothèque PyPDF
- importer la classe Document depuis la bibliothèque docx
- Ouvrir le fichier PDF en mode binaire
- Créer un document Word à l'aide de la classe Document
- Extraire le texte de chaque page du fichier PDF
- Ajouter le texte extrait au document Word
- Sauvegarder le document Word
Exemple complet
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import PyPDF2 from docx import Document def pdf_to_word(pdf_file, output_file): # Ouvrir le fichier PDF en mode binaire with open(pdf_file, "rb") as file: pdf_reader = PyPDF2.PdfReader(file) # Créer un document Word doc = Document() # Extraire le texte de chaque page du PDF for page_num in range(len(pdf_reader.pages)): page = pdf_reader.pages[page_num] text = page.extract_text() # Ajouter le texte extrait au document Word doc.add_paragraph(text) # Sauvegarder le document Word doc.save(output_file) if __name__ == "__main__": input_pdf = "input.pdf" # Remplacez par le chemin de votre fichier PDF output_word = "output.docx" # Remplacez par le nom du fichier Word de sortie pdf_to_word(input_pdf, output_word) |
5. Création d'un éditeur PDF graphique avec Tkinter
Nous allons maintenant créer une petite application graphique qui sélectionne un fichier .pdf via un bouton "Browse" et qui converti le fichier sélectionné en un fichier Word. A cet effet nous allons utiliser la bibliothèque Tkinter et le module filedialogue en suivant le même processus de convertion cité ci-dessus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
import tkinter as tk from tkinter import filedialog import PyPDF2 from docx import Document def open_pdf_file(): file_path = filedialog.askopenfilename(filetypes=[("PDF files", "*.pdf")]) if file_path: entry_path.delete(0, tk.END) entry_path.insert(0, file_path) def extract_text_from_pdf(): pdf_file = entry_path.get() if pdf_file: with open(pdf_file, "rb") as file: pdf_reader = PyPDF2.PdfReader(file) extracted_text = "" for page_num in range(len(pdf_reader.pages)): page = pdf_reader.pages[page_num] extracted_text += page.extract_text() # Sauvegarder le texte extrait dans un fichier Word save_to_word(extracted_text) def save_to_word(text): output_file = filedialog.asksaveasfilename(defaultextension=".docx", filetypes=[("Word files", "*.docx")]) if output_file: doc = Document() doc.add_paragraph(text) doc.save(output_file) # Créer une fenêtre root = tk.Tk() root.geometry("350x150") root.title("Extraction de texte PDF et sauvegarde dans un fichier Word") # Champ de saisie pour afficher le chemin du fichier PDF sélectionné entry_path = tk.Entry(root, width=35) entry_path.pack(pady=10) # Bouton "Browse" pour rechercher le fichier PDF button_browse = tk.Button(root, text="Browse", width=30, command=open_pdf_file) button_browse.pack(pady=5) # Bouton "Extract" pour extraire le texte du fichier PDF button_extract = tk.Button(root, text="Extract", width=30, command=extract_text_from_pdf) button_extract.pack(pady=5) # Exécuter la boucle principale de l'interface graphique root.mainloop() |
Younes Derfoufi
CRMEF OUJDA