Comment lancer un fichier AcroRd32.exe en PHP ? [ Résolu ] - PHP - Programmation
Marsh Posté le 02-11-2011 à 16:01:00
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...
Marsh Posté le 02-11-2011 à 16:25:27
rufo a écrit : faut augmenter le délai d'exécution (max_execution_time dans le php.ini). |
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 :
|
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
++
Marsh Posté le 02-11-2011 à 16:34:16
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...
Marsh Posté le 02-11-2011 à 16:36:05
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 !
++
Marsh Posté le 02-11-2011 à 16:44:12
@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 :
|
Ce que j'ignore, c'est pourquoi Apache, n'y arrive pas...
Si t'as une idée...
Merci
++
Marsh Posté le 02-11-2011 à 17:21:37
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...
Marsh Posté le 02-11-2011 à 17:41:48
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
Marsh Posté le 02-11-2011 à 17:45:38
à 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/
Marsh Posté le 02-11-2011 à 18:28:31
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 :
|
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)
Marsh Posté le 02-11-2011 à 18:38:33
@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...
Marsh Posté le 02-11-2011 à 18:39:40
GordonF_69 a écrit : Il faut mettre le fichier bat dans le meme rep que apache puis le lancer avec :
|
J'ai essayé, même problème blocage au niveau de Acrobat !
Même les droits et permissions NTFS y sont passés...
Marsh Posté le 02-11-2011 à 18:44:34
si c'est un pb de droit ou de profil, regarde avec le "runas" si tu peux modifier qqc...
Marsh Posté le 02-11-2011 à 18:49:21
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...
Marsh Posté le 03-11-2011 à 09:41:22
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
Marsh Posté le 06-11-2011 à 20:28:02
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 :
|
Méthode PHP
Code :
|
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
++
Marsh Posté le 12-11-2011 à 17:34:39
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...
Marsh Posté le 02-11-2011 à 14:27:57
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
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 :
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