[PHP] Lancer une ligne de commande pdftk depuis une page PHP

Lancer une ligne de commande pdftk depuis une page PHP [PHP] - PHP - Programmation

Marsh Posté le 10-03-2008 à 11:46:22    

Bonjour,  
 
Je viens ici pour me renseigner après de nombreux essais infructueux pour arriver à ce que je souhaite réaliser.
 
Voilà j'ai un page list_pdf.php qui parcourt un dossier et en affiche le contenu (un ensemble de fichiers PDF).
Il est ici possible de cocher des fichiers afin de les concaténer en un seul et même fichier.  
 
Je récupère le nombre de fichiers cochés, leurs noms via POST et tout se passe bien.
Par la suite je génère ma ligne de commande pour lancer pdftk :
 
D:\PROG\EasyPHP1-8\www\pdftk\pdftk-1.12\pdftk.exe "N°15247_SICMA AERO SEAT.pdf" "N°1_HONEYWELL SECAN.pdf" cat output pdfprint.pdf
 
Lorsque je copie et colle dans le cmd cette ligne de commande, le fichier pdfprint.pdf est bien crée et il contient les fichiers pdf à concaténer.  
 
Par contre lorsque j'utilise shell_exec(), exec() ou system() pour automatiser la concaténation à partir de la commande générée dynamiquement, la commande n'est pas lancée et rien ne se produit (system renvoit même 1).
 

Code :
  1. $lignecommand="D:\PROG\EasyPHP1-8\www\pdftk\pdftk-1.12\pdftk.exe "N°15247_SICMA AERO SEAT.pdf" "N°1_HONEYWELL SECAN.pdf" cat output pdfprint.pdf";
  2. $cmdline = "cmd /C ".$lignecommand;
  3. //Affichage pour vérification de la ligne de commande
  4. echo $cmdline."<br />";
  5. $res=shell_exec($cmdline);
  6. echo $res;

Reply

Marsh Posté le 10-03-2008 à 11:46:22   

Reply

Marsh Posté le 10-03-2008 à 11:53:28    

pourquoi n'appelles tu pas pdftk directement sans passer par cmd ?
et pour les éventuels messages d'erreur ça peut être utile de rediriger stderr avec "2>&1"

Reply

Marsh Posté le 10-03-2008 à 11:57:46    

Comment puis je l'appeler directement ? Je ne maîtrise pas trop le lancement d'exécutable depuis PHP.  :)  
J'ai aussi essayé avec l'objet COM.
 
Ce genre de chose :  

Code :
  1. $shell = new COM('WScript.Shell') or die("Cannot start WScript.Shell" );
  2. $oExec = $shell->Exec($cmdline,0,true);


Je précise aussi que :
concat_PDF.php (qui doit lancer la ligne de commande pdftk),
pdftpk.exe,
ainsi que les fichiers à concaténer se trouvent tous dans le même dossier.
 
La concaténation doit aussi être totalement transparente pour l'utilisateur. Lui, il coche les fichiers à concaténer, le script les concatène via pdftk puis fait quelques opérations sur le fichier généré. C'est vraiment l'étape "lancer la ligne de commande générée à pdftk" que je ne sais comment implémenter.
 
Peut être existe une méthodologie bien particulière (que je ne maîtrise pas du tout) pour lancer un exe depuis PHP.

Message cité 1 fois
Message édité par roumsi le 10-03-2008 à 12:07:03
Reply

Marsh Posté le 10-03-2008 à 13:41:57    

roumsi a écrit :

Comment puis je l'appeler directement ?

ben au lieu de d'executer $cmdline tu executes $lignecommand, tout simplement

Reply

Marsh Posté le 10-03-2008 à 15:01:31    

Ça fonctionne, je n'avais pas fait attention à ça à force de me prendre le chou. Je te remercie grandement.  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed