CodeGym /Cours Java /Python SELF FR /Division des pages d'un document PDF pour sauvegarder des...

Division des pages d'un document PDF pour sauvegarder des parties distinctes

Python SELF FR
Niveau 43 , Leçon 4
Disponible

1. Diviser un document PDF en pages

Les bases de la division d'un document PDF avec PyPDF2

PyPDF2 offre une classe PdfReader pour ouvrir et lire des fichiers PDF, ainsi qu'une classe PdfWriter pour écrire des pages dans un nouveau document PDF. Pour diviser un document en pages distinctes, on utilise add_page() dans PdfWriter pour sauvegarder les pages nécessaires dans des fichiers séparés.

Sauvegarder chaque page d'un PDF comme un document séparé

Ce code divise un document en créant un fichier PDF distinct pour chaque page du fichier d'origine.

Python

import PyPDF2

# Ouvrir le fichier PDF
with open("sample.pdf", "rb") as pdf_file:
    pdf_reader = PyPDF2.PdfReader(pdf_file)
    
    # Parcourir chaque page
    for page_num in range(len(pdf_reader.pages)):
        pdf_writer = PyPDF2.PdfWriter()
        
        # Extraire la page et l'ajouter dans un nouveau PDF
        page = pdf_reader.pages[page_num]
        pdf_writer.add_page(page)
        
        # Sauvegarder la page actuelle comme un fichier PDF distinct
        output_filename = f"page_{page_num + 1}.pdf"
        with open(output_filename, "wb") as output_file:
            pdf_writer.write(output_file)

print("Chaque page est sauvegardée comme fichier distinct.")

Dans cet exemple, chaque page du document d'origine est sauvegardée dans un fichier distinct page_1.pdf, page_2.pdf et ainsi de suite.

2. Extraire une plage de pages

Parfois, il faut sauvegarder non pas chaque page, mais une plage spécifique, par exemple de la page 1 à 5. Pour cela, on peut spécifier les pages précises dans une boucle.

Python

import PyPDF2

with open("sample.pdf", "rb") as pdf_file:
    pdf_reader = PyPDF2.PdfReader(pdf_file)
    pdf_writer = PyPDF2.PdfWriter()
    
    # Définir la plage de pages, par exemple, de la page 1 à 5
    start_page = 1
    end_page = 5
    
    for page_num in range(start_page - 1, end_page):  # La numérotation commence à 0
        page = pdf_reader.pages[page_num]
        pdf_writer.add_page(page)

    # Sauvegarder la plage de pages comme un nouveau PDF
    with open("pages_1_to_5.pdf", "wb") as output_file:
        pdf_writer.write(output_file)

print("Plage de pages sauvegardée avec succès.")

Ce code extrait les pages de 1 à 5 et les sauvegarde dans le fichier pages_1_to_5.pdf.

3. Sauvegarder plusieurs plages

Si vous avez besoin d'extraire plusieurs plages de pages et de les sauvegarder dans des fichiers distincts, vous pouvez utiliser une fonction qui accepte le début et la fin d'une plage.

Python

import PyPDF2

def save_page_range(input_pdf, output_pdf, start_page, end_page):
    with open(input_pdf, "rb") as pdf_file:
        pdf_reader = PyPDF2.PdfReader(pdf_file)
        pdf_writer = PyPDF2.PdfWriter()
        
        for page_num in range(start_page - 1, end_page):
            page = pdf_reader.pages[page_num]
            pdf_writer.add_page(page)

        with open(output_pdf, "wb") as output_file:
            pdf_writer.write(output_file)
    
    print(f"Pages {start_page}–{end_page} sauvegardées dans {output_pdf}")

# Utiliser la fonction pour extraire différentes plages
save_page_range("sample.pdf", "section_1.pdf", 1, 3)
save_page_range("sample.pdf", "section_2.pdf", 4, 6)

Ce code crée deux plages sauvegardées : les pages de 1 à 3 dans section_1.pdf et de 4 à 6 dans section_2.pdf.

4. Traitement de masse des documents PDF

Automatiser la division de PDF pour toutes les pages d'un dossier

Si vous devez diviser chaque page de tous les documents PDF dans un dossier donné, vous pouvez créer un script qui traitera automatiquement chaque fichier.

Python

import PyPDF2
import os

# Chemin vers le dossier contenant les fichiers PDF
folder_path = "pdf_folder"

# Automatisation de la division des PDF dans le dossier
for filename in os.listdir(folder_path):
    if filename.endswith(".pdf"):
        file_path = os.path.join(folder_path, filename)
        with open(file_path, "rb") as pdf_file:
            pdf_reader = PyPDF2.PdfReader(pdf_file)
            
            # Diviser le fichier en pages distinctes
            for page_num in range(len(pdf_reader.pages)):
                pdf_writer = PyPDF2.PdfWriter()
                page = pdf_reader.pages[page_num]
                pdf_writer.add_page(page)
                
                # Créer le nom du fichier de sortie
                output_filename = f"{filename[:-4]}_page_{page_num + 1}.pdf"
                output_path = os.path.join(folder_path, output_filename)
                
                # Sauvegarder la page
                with open(output_path, "wb") as output_file:
                    pdf_writer.write(output_file)

print("Toutes les pages de chaque fichier PDF dans le dossier ont été sauvegardées avec succès.")

Ce script traite automatiquement chaque fichier PDF dans le dossier pdf_folder et sauvegarde chaque page comme un fichier PDF distinct nommé <nom_du_fichier>_page_<numéro>.pdf.

5. Pourquoi diviser des fichiers PDF ?

Comme disait un grand développeur, après trop d'heures à coder : "Pourquoi ?". Diviser des documents PDF peut être utile dans diverses situations :

  • Extraction des pages clés : Partagez uniquement les pages nécessaires, sans envoyer "Guerre et Paix" en entier à vos collègues.
  • Créer des compilations : Sauvegardez des chapitres importants de différents documents dans un seul fichier pour des besoins d'étude ou professionnels.
  • Archivage : Stockez des données importantes, page par page, pour éviter de perdre des infos parmi des pages inutiles.

Voilà où notre héros PyPDF2 entre en scène pour simplifier votre vie !

6. Petits soucis et astuces pour les éviter

En travaillant avec des documents PDF, vous pouvez rencontrer certains défis. Par exemple, la numérotation des pages commence à zéro dans PyPDF2, alors n'oubliez pas d'en tenir compte lorsque vous spécifiez les pages nécessaires. Rien de pire que de perdre du temps à extraire les mauvaises pages !

Aussi, lors de la gestion des fichiers ouverts/fermés, assurez-vous que tous les close() sont bien appelés. Un fichier mal fermé peut causer des maux de tête, surtout si c'est un manuel Oracle.

Application dans la vie réelle

L'utilisation de cette méthode est utile non seulement pour vos documents personnels. Par exemple, si vous travaillez dans un cabinet juridique et que vous devez rapidement préparer des sections spécifiques d'un dossier complexe pour le tribunal, diviser un PDF en parties peut vous faire gagner un temps précieux.

Ces techniques peuvent également être utilisées pour préparer du matériel éducatif, extraire des sections importantes de rapports techniques, et bien plus encore. La vraie magie réside dans la simplicité avec laquelle vous pouvez automatiser ces tâches répétitives !

1
Опрос
Lecture des fichiers PDF avec PyPDF2,  43 уровень,  4 лекция
недоступен
Lecture des fichiers PDF avec PyPDF2
Lecture des fichiers PDF avec PyPDF2
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION