Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fusionner des PDF dans un sous dossier

Sujet résolu
    5 octobre 2022 à 16:14:51

    Bonjour à tous

    Je travail sur un programme permettant de faire le récapitulatif de donnés estimés par rapport au résultat réel 

    Pour ça je génère un diagramme avec matplolib qui reprend ces donnés et je l'enregistre dans un pdf que je place de la façon suivante

    dossier_de_mon_programme/comptes_rendu/nom_du_client/diagramme.pdf

    (je fais une vingtaine de clients à la fois puisque tous sont dans un même fichier) 

    Mon objectif serait de fusionner tout les fichiers "diagramme.pdf" (ils ont tous un nom différents) en un seul afin de pouvoir faire un envois plus simple pour le client 

    J'ai testé les solutions classiques mais le problème qui reviens toujours, et que je n'arrive pas à surmonter, est le fait que mes pdf soient dans un sous dossier 

    Quelqu'un pourrait me donner des conseils sur une bonne façon de faire cette fusion que je puisse utiliser pour faire tout les clients séparément sans avoir besoin de faire tourner le code pour chaque client ?

    Merci d'avance 

    -
    Edité par camced 5 octobre 2022 à 16:19:48

    • Partager sur Facebook
    • Partager sur Twitter
      5 octobre 2022 à 17:58:42

      Tu peux montrer ce que tu as tenté (code) ? avec quel module pdf ?

      Qu'est-ce que tu appelles solutions classiques ?

      L'idée serait d'ouvrir le pdf du client en cours en modification, se placer à la dernière page, ajouter sur une nouvelle page le nouveau diagramme et enregistrer le pdf.

      Sinon hors code, des "imprimantes pdf" ou outils peuvent fusionner des fichiers pdf ensemble (pdfsam, pdf creator, ... pour ceux que je connais)

      • Partager sur Facebook
      • Partager sur Twitter
        6 octobre 2022 à 9:04:29

        Pour une raison obscure j'ai du partir trop loin dans ma recherche pour une erreur de base puisqu'à tête reposée je viens de refaire complètement la partie de code en question et de la réussir du premier coup...

        Mais je vais quand même partager ce que j'ai fait au cas ou quelqu'un en aurait besoin dans le futur 

        #Bibliothèque nécessaires
        import csv
        import os
        from PyPDF2 import PdfFileMerger
        import matplotlib.pyplot as plt
        
        nomClientP= ""
        clients_traites = []
        #Ouverture du csv
        with open('CSV.csv') as file:
            csvreader = csv.DictReader(file, delimiter=';')
            for row in csvreader: #Lecture des lignes du CSV
                nom_client = row["Nom du client"] #Enregistrement du nom du client dans la variable nom_client
                nom_produit = row["Nom du produit"] #Enregistrement du produit correspondant à la ligne
                #Test pour enregistrer tout les clients qui ont étés traités
                if nomClientP != nom_client:
                    clients_traites.append(nom_client)
                    nomClientP = nom_client
            fig, ax = plt.subplots() #Création de la figure (diagramme)
            os.makedirs("Comptes rendus/"+nom_client, exist_ok=True) #Création d'un sous dossier du nom du client s'il n'existe pas
            plt.savefig("Comptes rendus/"+nom_client+"/Compte rendu "+nom_client+nom_produit+".pdf", format="pdf", bbox_inches="tight") #Enregistrement du diagramme au format PDF dans le sous dossier correspondant
            plt.close()
            
        for i in clients_traites:
            merger = PdfFileMerger() #Création du file merger qui va combiner tout les pdf
            path_to_files = r'Comptes rendus/'+i+'/' #Enregistrement du chemin d'accès aux PDF
            for root, dirs, file_names in os.walk(path_to_files): #Lecture de la liste des PDF présents dans le fichier
                for file_name in file_names:
                    merger.append(path_to_files + file_name) #Ajout du PDF dans le fichier fusioné 
            merger.write("Comptes rendus/"+i+"/Compte rendu global "+i+".pdf") #Enregistrement du fichier fusioné 
            merger.close() #Fermeture du file merger pour pouvoir recommencer pour le client suivant grace a la boucle

        Le code n'est pas hyper "professionnel" et optimisé mais il fonctionne suffisamment bien pour mes besoins

        Si il y'a des questions, je peux essayer d'y répondre

        umfred a écrit:

        Sinon hors code, des "imprimantes pdf" ou outils peuvent fusionner des fichiers pdf ensemble (pdfsam, pdf creator, ... pour ceux que je connais)

        J'y ai pensé, mais je voulais que ça se face seul sans que j'ai besoin de le faire manuellement pour chaque client après coup 

        Et du coup merci d'avoir pris un peut de ton temps pour m'aider même si au final la solution était simplement de recommencer à tête reposée 



        • Partager sur Facebook
        • Partager sur Twitter

        Fusionner des PDF dans un sous dossier

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown