Intégration de Python dans PHP pour la Concaténation de Fichiers PDF
Systemin
30 juillet 2024Introduction
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.