Services

Intégration de Python dans PHP pour la Concaténation de Fichiers PDF

avatar
Systemin
30 juillet 2024
blog-img

Introduction

Dans cet article, nous aborderons une approche innovante pour la gestion des fichiers PDF en PHP. Face aux limitations des modules existants sous PHP, qui sont souvent payants ou obsolètes, nous opterons pour une solution alternative : l’utilisation d’un script Python. Cette méthode nous permettra de contourner les contraintes des outils PHP en exploitant la flexibilité et la puissance de Python pour la concaténation des fichiers PDF.

Appel de Python depuis PHP


            public function mergePDFs() {
                $pdfPaths = [/* Chemins des fichiers PDF à fusionner */];
                $pdfPaths = array_map('escapeshellarg', $pdfPaths);
                $outputPath = 'chemin/vers/le/fichier/sortie.pdf';
                $outputPathPython = escapeshellarg($outputPath);
                $command = "python3 chemin/vers/le/script/mergePdf.py " . implode(' ', $pdfPaths) . " " . $outputPathPython;
                exec($command, $output, $returnVar);
            
                if ($returnVar === 0) {
                    return response()->download($outputPath);
                } else {
                    // Gérer l'erreur
                    return response()->json(['error' => 'Failed to merge PDFs'], 500);
                }
            }
                            

Ce script PHP récupère les chemins des fichiers PDF, construit la commande pour exécuter le script Python, et gère la réponse. Ne pas oublier d’importer la librairie PyPDF2.

Script Python pour la fusion de PDFs


            pip install PyPDF2
            import PyPDF2
            import sys
            
            def merge_pdfs(paths, output):
                pdf_writer = PyPDF2.PdfWriter()
            
                for path in paths:
                    pdf_reader = PyPDF2.PdfReader(path)
                    for page in range(len(pdf_reader.pages)):
                        pdf_writer.add_page(pdf_reader.pages[page])
            
                with open(output, 'wb') as out_pdf:
                    pdf_writer.write(out_pdf)
            
                return output
            
            if __name__ == '__main__':
                input_paths = sys.argv[1:-1]  # Les chemins des fichiers source
                output_path = sys.argv[-1]    # Le chemin de sortie
                merge_pdfs(input_paths, output_path)
                            

Ce script Python lit les fichiers PDF spécifiés, les fusionne en utilisant PdfWriter, et sauvegarde le résultat dans le chemin de sortie spécifié.

Conclusion

En combinant ces deux scripts, vous pouvez réaliser une fusion de fichiers PDF de manière flexible et puissante, tout en contournant les limites des modules PHP pour la gestion des PDF.