Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2911 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [ Résolu ] Comment lancer un fichier AcroRd32.exe en PHP ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ Résolu ] Comment lancer un fichier AcroRd32.exe en PHP ?

n°2109296
cvb
Posté le 02-11-2011 à 14:27:57  profilanswer
 

Bonjour,
 
J'ai un script "doc.bat" (fonctionnement parfaitement) pour imprimer des PDF en mode silencieux en ligne de commande :
 
 
Code :Sélectionner tout - Visualiser dans une fenêtre à part

Code :
  1. "C:\\Program Files\\Adobe\\Acrobat 7.0\\Reader\\AcroRd32.exe" /t d:\\\doc.pdf


Ce fichier "Doc.bat" je souhaiterais le lancer en PHP !
 
Quand je lance l'exécution du fichier CMD en PHP voilà ce qui se passe.
 
 
1: Le process AcroRd32.exe se lance dans les processus  
2: Le process CMD se lance également  
3: le navigateur tourne, jusqu'au moment où il mets "temps d'attente depassé".  
4: Rien ne sort sur l'imprimante  
 
Code :
 

Code :
  1. var_dump(shell_exec('document.bat'));
  2. var_dump(exec('document.bat'));
  3. var_dump(passthru('document.bat'));


 
Auriez-vous une solution pour que je puisse exécuter mon fichier bat et que je puisse imprimer l'ensemble de mes documents ?
 
D'avance merci
++


Message édité par cvb le 06-11-2011 à 20:28:35
mood
Publicité
Posté le 02-11-2011 à 14:27:57  profilanswer
 

n°2109341
rufo
Pas me confondre avec Lycos!
Posté le 02-11-2011 à 16:01:00  profilanswer
 

faut augmenter le délai d'exécution (max_execution_time dans le php.ini).
 
Cal dit, est-ce la bonne solution de faire exécuter côté serveur un processus d'impression lancé sur une action en provenance d'un navigateur web d'un client :??: Ne vaudrait-il pas mieux que le script php soit lancé par le cron (planificateur de tâche vu que ça a l'air d'être sous Windows) en ligne commande? Comme ça, plus de délai d'exécution...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2109353
cvb
Posté le 02-11-2011 à 16:25:27  profilanswer
 

rufo a écrit :

faut augmenter le délai d'exécution (max_execution_time dans le php.ini).
 
Cal dit, est-ce la bonne solution de faire exécuter côté serveur un processus d'impression lancé sur une action en provenance d'un navigateur web d'un client :??: Ne vaudrait-il pas mieux que le script php soit lancé par le cron (planificateur de tâche vu que ça a l'air d'être sous Windows) en ligne commande? Comme ça, plus de délai d'exécution...


 
Bonjour,
 
Merci de ta réponse.
 
En fait je génére des fichiers PDF en PHP (environ 800 documents...).  
Je cherches depuis ce matin à les imprimer coté serveur.  
 
La solution que j'ai trouvé est de passer par un fichier BAT que je crée dynamiquement au fur et à mesure de la génération des PDF.  
Fichier BAT que je désires exécuter à la fin automatiquement...
 
Ce que j'ignore c'est pourquoi l'envoie à l'imprimante ne s'effectue pas, alors que le BAT fonctionne trés bien individuellement.
 

Code :
  1. var_dump(system('"C:\\Program Files\\Adobe\\Acrobat 7.0\\Reader\\AcroRd32.exe" /t "\\\\192.168.0.114\\aquipme\\doc.pdf"'));


 
En le lançant par un cron, le soucis sera identique.  
Ce n'est pas un soucis de temps à mon sens, car même au bout de 2 minutes ça n'évolue pas... :/
 
D'avance merci
++

n°2109363
rufo
Pas me confondre avec Lycos!
Posté le 02-11-2011 à 16:34:16  profilanswer
 

Pas sûr que le pb soit identique : dans un cas, le bat est lancé par php via Apache (avec tous les délais d'expirations qu'Apache ou php peuvent avoir) alors que dans l'autre, c'est php direct qui exécute le script, donc plus de délais d'expiration...
 
Après, est-ce que ton bat est bien conçu et attend bien la fin de l'exé de l'instruction précédente (impression). Si c'est pas le cas, ça pourrait venir de la mémoire saturée ou de trop d'instance d'acrobat reader lancées en même temps...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2109364
cvb
Posté le 02-11-2011 à 16:36:05  profilanswer
 

re,
 
Je me dis que le fichier BAT fonctionne car quand je le lance manuellement, ça imprime direct. Je vais essayer de lancer depuis PHP...
 
Je reviens dans 5 minutes ! :D
 
++

n°2109371
cvb
Posté le 02-11-2011 à 16:44:12  profilanswer
 

@rufo: nickel, ça fonctionne. En lançant en ligne de commande mon fichier PHP, lui contenant le fichier à imprimer !
Le tout est d'automatiser cela, depuis le programme principale...
 

Code :
  1. php "D:\Projet WEB\printer\index.php"


 
Ce que j'ignore, c'est pourquoi Apache, n'y arrive pas...
Si t'as une idée...
 
Merci ;)
++

n°2109394
rufo
Pas me confondre avec Lycos!
Posté le 02-11-2011 à 17:21:37  profilanswer
 

Ben probablement à cause du délai d'exécution qui expire (timeout). Faut pas oublier qu'Apache est un serveur web, ça sert des pages web, donc, des temps d'exécution relativement courts (qq secondes). Si un script durait plus, c'est qu'il y aurait un pb... :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2109397
olivthill
Posté le 02-11-2011 à 17:41:48  profilanswer
 

Peut-être que l'environnement est différent, par exemple la variable PATH.
 
Peut-être que le programme d'impression attendrait une confirmation.
 
Si ce sont des PDF créés avec FDPF, je crois qu'il y a une option pour les imprimer dans FPDF.
 
Une redirection vers un fichier d'erreur donnerait peut-être des informations intéressantes
 >erreur.log
 
 
 

n°2109398
rufo
Pas me confondre avec Lycos!
Posté le 02-11-2011 à 17:45:38  profilanswer
 

à ma connaissance, FPDF ne permet que de créer des pdf, pas de les imprimer... (si on parle bien de la même lib FPDF, une lib en php).
 
Pour info, si ton besoin est de convertir des documents (html, par ex) en pdf, y'a un très bon outil : http://code.google.com/p/wkhtmltopdf/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2109408
GordonF_69
Posté le 02-11-2011 à 18:28:31  profilanswer
 

Il faut mettre le fichier bat dans le meme rep que apache puis le lancer avec :
popen("go.bat" ) ou system("go.bat" )...
 
Puis dans le go.bat il y a :

Code :
  1. @echo off
  2. start document.bat
  3. exit


 
Ca permet de rendre direct la main a php (au lieu de le faire attendre).
Puis pour voir les sorties, utilise ">>"
 
si ta des pb, gere les pb de droits et les options d'execution du service apache ;)
 
Enjoy ;) (j'ai pas mal galéré ya qq années avec ce meme pb)

Message cité 1 fois
Message édité par GordonF_69 le 02-11-2011 à 18:29:29
mood
Publicité
Posté le 02-11-2011 à 18:28:31  profilanswer
 

n°2109411
cvb
Posté le 02-11-2011 à 18:38:33  profilanswer
 

@olivthill : j'ai effectivement l'impression qu'il attent une confirmation, que j'ignore, car je n'ai aucun retour. Juste une variable NULL quand j'arette le process (Acrobat, lancé au momement du lancement du script) depuis le gestionnaire. La redirection vers un fichier ne changerait rien du tout, puisque il reste bloqué sur la fonction elle même, ou du moins au niveau d'Acrobat...
 
> FPDF permet de les créer facilement. Par contre il n'y a pas d'option permettant de les imprimer. Il y a quelques modules qui donne l'impression de s'appuyer dessus que j'ai croisé ce matin sur le web. Mais j'ai pas pris le temps de l'implémenté, par manque de temps.
 
Autre façon d'imprimer en PHP, "php_printer" : C'est un module à installer mais il ne permet pas d'envoyer des documents sur l'imprimante, juste du texte. Et surtout rien pour convertir du binaire en document de sortie correct...:/
 
Donc pour finaliser, je me suis rabbatu sur "php ....".
En attendant mieux... :whistle:

n°2109412
cvb
Posté le 02-11-2011 à 18:39:40  profilanswer
 

GordonF_69 a écrit :

Il faut mettre le fichier bat dans le meme rep que apache puis le lancer avec :
popen("go.bat" ) ou system("go.bat" )...
 
Puis dans le go.bat il y a :

Code :
  1. @echo off
  2. start document.bat
  3. exit


 
Ca permet de rendre direct la main a php (au lieu de le faire attendre).
Puis pour voir les sorties, utilise ">>"
 
si ta des pb, gere les pb de droits et les options d'execution du service apache ;)
 
Enjoy ;) (j'ai pas mal galéré ya qq années avec ce meme pb)


 
 
J'ai essayé, même problème blocage au niveau de Acrobat !
Même les droits et permissions NTFS y sont passés... ;)

n°2109413
GordonF_69
Posté le 02-11-2011 à 18:44:34  profilanswer
 

si c'est un pb de droit ou de profil, regarde avec le "runas" si tu peux modifier qqc...

n°2109414
GordonF_69
Posté le 02-11-2011 à 18:45:26  profilanswer
 

PS : d:\\\doc.pdf
 
3 \ ?

n°2109415
cvb
Posté le 02-11-2011 à 18:49:21  profilanswer
 

GordonF_69 a écrit :

si c'est un pb de droit ou de profil, regarde avec le "runas" si tu peux modifier qqc...


 
 
J'ai les droits d'administration sur le poste... ;)
J'ai même mis le nom du poste dans les droits du fichier, car quand un application WEB crée un fichier, le "Créateur propriétaire" est le nom du poste depuis lequel il fut crée...

n°2109485
PierreC
Posté le 03-11-2011 à 09:41:22  profilanswer
 

Du coté des impressions auto avec acrobat j'ai pas mal galéré dans un autre langage (access vba). En effet celui ci doit s'ouvrir graphiquement pour imprimer puis se referme automatiquement. Je suis pas sur que cela fonction avec la logique php -> bat
Pour résoudre le problème je suis passé par un autre programme pour imprimer les pdf, de mémoire gsview


---------------
Du tofu en Alsace : www.tofuhong.com
n°2110059
cvb
Posté le 06-11-2011 à 20:28:02  profilanswer
 

Bonsoir PierreC,
 
J'ai essayé avec Gsview et mon soucis fut le même je n'ai pas pu envoyer les documents à l'imprimante, sans visionnage au départ par le client.
Par contre, aprés des heures de recherche j'ai trouvé une solution qui fonctionne trés bien, alliant puissance et légereté : Couplage de PHP et de JAVA.
 
J'ai monté un serveur GlassFisch (pour l'exemple) dans lequel j'ai intégré Quercus, utilisé pour interprêter le PHP, ainsi que les laisions entre les classes JAVA et PHP. Je me suis aidé des deux liens (le premier pour installer lien m'ayant aidé à installer Glassfish)
 
=> http://glassfishplugins.java.net/eclipse36/index.html
=> http://jlafosse.developpez.com/liv [...] sfish/php/
 
 
Pour lancer le process Acrobat, création d'une classe JAVA utilisant la méthode Runtime... :
 
 
 
Classe JAVA

Code :
  1. import java.io.*;
  2. public class imprimerPDF
  3. {
  4. public String ImprimerDocument()
  5. {
  6.  String cmd3 = "\"C:\\Program Files\\Adobe\\Acrobat 9.0\\Acrobat\\Acrobat.exe\" " +" /t"+ " \"F:\\wamp\\www\\imprime_pdf\\titre.pdf\" ";
  7.  try {
  8.   Runtime.getRuntime().exec(cmd3);
  9.  } catch (IOException e) {
  10.   // TODO Auto-generated catch block
  11.   e.printStackTrace();
  12.  }
  13.  return "je suis la classe JAVA";
  14. }
  15. }


 
 
Méthode PHP

Code :
  1. <?php
  2. import ImprimerPDF;
  3. $pdf = new imprimerPDF();
  4. echo $pdf->ImprimerDocument();
  5. ?>


 
 
Et tout cela fonctionne, je peux imprimer directement depuis mes pages PHP, en attaquant le process Acrobat.exe !
C'est la seule solution que j'ai trouvé... ;)
 
Bonne soirée
++


Message édité par cvb le 07-11-2011 à 06:56:51
n°2111128
cvb
Posté le 12-11-2011 à 17:34:39  profilanswer
 

Informations complémentaires:
 
Quercus, est un excellement moyen de coupler JAVA et PHP. Seulement, Quercus n'est en rien un serveur PHP, juste un interpréteur de commande PHP. Des soucis peuvent avoir lieu, du code ne fonctionnant pas, des comportements différent de certaine méthode.  
 
- Pour votre information HTML2PDf ne fonctionne pas sous Quercus
- Des soucis avec la fonction Mktime, notament lors de l'ajout de jour ou de mois au date.
- ....
 
Voilà, chogissez bien le serveur sur lequel sera hébergé PHP.  
Des couplages serveur WAMP / JAVA sont toujours possibles sans perte de performance...


Message édité par cvb le 12-11-2011 à 17:35:09

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [ Résolu ] Comment lancer un fichier AcroRd32.exe en PHP ?

 

Sujets relatifs
sauvegarde d'une anomalie dans un fichier[Résolu] MIME::Lite Fichier Excel corrompu lors de l'envoi par mail
Servlet : faire un download d'un fichier zipCréation d'un livre d'or en PHP : problème de débutant...
jquery et ui : j'ai besoin d'un petit coup de main pour me lancer.Récuperer info membre Php-Mysql
configurer PHP pour intaller MagentoExclure toute les extensions de fichier sauf une
problème pour ajouter un nombre à une variable (heure UTC et CEST) 
Plus de sujets relatifs à : [ Résolu ] Comment lancer un fichier AcroRd32.exe en PHP ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR