Bonjour,
Je préfère commencer en indiquant que je suis un débutant et n'ai pas forcément les bons réflexes, je suis donc ouvert à toutes propositions, chaque jour m'en apprends d'avantage .
j'ai lu pas mal de chose autour de cette demande, mais je ne parviens pas à le faire fonctionner, je ne comprends pas d’où vient le problème.
j'explique l'idée.
j'ai créé un site intranet pour ma société avec symfony 5/ WAMP sous Windows et une page a pour but d'imprimer des étiquettes sur une imprimante spécifique du serveur, d’après ce que j'ai lu, il n'est pas possible d'imprimer directement (sans la boite d'impression) sur une imprimante spécifique avec PHP. à savoir que je suis administrateur de ce serveur.
Je me suis donc dis, pas grave, je vais créer un fichier bat qui lance l'impression du fichier en question et je vais appeler ce fichier bat avec php quand j'en ai besoin.
à savoir que le nom du fichier sera toujours le même et il se trouve toujours au même endroit, il est généré avant l'impression et supprimer après impression.
j'ai voulu faire ultra simple pour avancer pas à pas, j'ai donc ajouté dans mon contrôleur une fonction qui lance uniquement le bat quand j'appuie sur un bouton.
Mon fichier bat pour les tests
start C:\Users\WEBSRV.AXIS\Desktop\ean.pdf
quand je clique dessus pour l’exécuter, ça fonctionne sans problème, mon fichier PDF s'ouvre (je sais, je veux imprimer, mais j'y vais étape par étape)
je veux donc le lancer avec PHP
1 2
| $route = 'C:\Users\WEBSRV.AXIS\Desktop\runPrintEtiquette.bat';
shell_exec($route); |
j'ai également tester avec exec()
et ..... rien ne se passe .... le problème étant que je n'ai pas d'info sur ce que je fais mal
je tente donc une autre approche avec popen
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| $route = 'C:\Users\WEBSRV.AXIS\Desktop\runPrintEtiquette.bat';
error_reporting(E_ALL);
// Ajoute une redirection pour que vous puissiez lire stderr.
$handle = popen($route, 'r');
$rapport = "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
$read;
pclose($handle);
$this->addFlash('info', $rapport);
$this->addFlash('info', $read);
return $this->redirectToRoute('app_print_empl'); |
et les messages flashs m'affichent 2 choses
pour le $rapport => 'Resource id #18'; resource
pour le $read => C:\wamp64\www\Intranet\public>start C:\Users\WEBSRV.AXIS\Desktop\ean.pdf
donc à priori, il capte bien le start qui se trouve dans le fichier bat, donc je ne fais pas d'erreur sur l'écriture de la route.
j'ai donc besoin d'aide pour cette première étape qui ne consiste qu'a lancer le fichier bat.
évidement une fois que ce lancement de bat par PHP fonctionnera, il faudra modifier le bat pour qu'il lance directement l'impression, ce que je n'ai pour l'instant pas réussi à faire non plus
Voici mon code
print \\srvad\IMP_EAN_PRODUIT C:\Users\WEBSRV.AXIS\Desktop\ean.pdf
et le résultat => Impossible d’initialiser le périphérique PRN
je compte sur vous pour me filer un coup de main, je suis bloquer depuis pas mal de temps la dessus.
d'avance merci.
cdt,
Partager