IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Lancer un fichier .bat en PHP pour impression directe


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    informatique
    Inscrit en
    Décembre 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2016
    Messages : 13
    Par défaut Lancer un fichier .bat en PHP pour impression directe
    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
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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,

  2. #2
    Membre habitué
    Homme Profil pro
    informatique
    Inscrit en
    Décembre 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2016
    Messages : 13
    Par défaut Impression Ok
    Il ne me reste plus que le lancement du bat avec php, j'ai réussi à imprimer avec le bat les fichiers pdf du dossier et à les supprimer au fil de l'eau grâce à ça https://codeload.github.com/stylersn...s/heads/master

    quelqu'un peu m'aider please, je suis en galére

  3. #3
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 699
    Par défaut
    essayer de lancer la commande avec passthru, peut-être que vous verrez un message d'erreur :
    https://www.php.net/manual/fr/function.passthru.php

  4. #4
    Membre habitué
    Homme Profil pro
    informatique
    Inscrit en
    Décembre 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2016
    Messages : 13
    Par défaut Pas de message d'erreur
    Merci pour ton retour, c'est cool,

    j'ai essayé et n'obtient malheureusement pas d'erreur.

    d'ailleurs cela a évolué, quand j'ai suivi les conseils de ce post

    https://openclassrooms.com/forum/suj...puis-php-99427

    maintenant ça se lance en parti à partir de PHP,

    quand je lance le fichier bat en double cliquant dessus, il imprime puis supprime le fichier => donc nickel

    quand je le lance à partir de mon script PHP, il ne fait que supprimer le fichier, l'impression ne s'effectue pas

    je ne comprends pas pourquoi il n'y a que la moitié du travail qui est effectué

  5. #5
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 699
    Par défaut
    ça peut venir du serveur apache qui n'a pas les même autorisations que l'utilisateur.
    mais ensuite je ne m'y connais pas en autorisations windows donc je ne pourrai pas vous aider davantage.

  6. #6
    Membre habitué
    Homme Profil pro
    informatique
    Inscrit en
    Décembre 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2016
    Messages : 13
    Par défaut lancé en partie
    je ne pense pas que cela vienne des droits car j'arrive en partie à l’exécuter

    quand je double clique sur mon fichier print.bat, ça ouvre les fichiers pdf , ça imprime tous les fichiers pdf du dossier, ça les referme et ça les supprimes => nikel j'ai réussi cette partie grâce à ces fichiers https://codeload.github.com/stylersn...s/heads/master que j'ai un peu adapté et ajouté le del de mon fichier ean.pdf aprés impression

    Lorsque je le lance à partir du script PHP, ça ne fait que supprimer le pdf, pas d'ouverture de fichier et donc l'impression n'est pas lancé

    Selon moi, le problème vient du fait que mon PDF n'est pas ouvert quand je lance le bat à partir de PHP, alors que le BAT imprimer les fichiers ouverts puis les refermes, techniquement, je n'ai pas besoin de les ouvrir, juste de les imprimer et de les supprimer, mais j'avoue ne pas savoir comment le coder en .bat

    d’après ce que j'ai vu c'est

    print fichier mais ça ne fonctionne ça me note une erreur dans la console

Discussions similaires

  1. Lancer un fichier .bat avec une page PHP
    Par arezki76 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 09/11/2009, 09h47
  2. [C#] lancer un fichier .bat
    Par damned3 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 24/09/2006, 13h10
  3. [DOM XML] Insertion données dans fichier XML avec PHP pour Flash ?
    Par ExSter dans le forum Bibliothèques et frameworks
    Réponses: 17
    Dernier message: 10/05/2006, 11h16
  4. Lancer un fichier BAT
    Par bug_warrior dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/03/2006, 17h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo