Frank: Drucken via PHP

Hi erstmal,

ich bin dabei eine kleine Werkstatt-Software zu erstellen. Die ist jetzt auch so gut wie fertig. Mein Problem ist das für den Kunden und dem Rechner ein sogenannte Bearbeitungsnummer ausgedruckt werden soll. Dazu stehen mir 2 Netzwerkdrucker zu Verfügung. Ein son kleiner Kassenbon-Drucker für den Kunden, wie auch ein Etikettendrucker für die Ware.

Meine Frage wie gestalte ich das sinnvoll. Am besten wehre eine abfrage möchten sie Drucken und der Druckbefehl geht an beiden Drucker. Evt. auch zwei abfragen hintereinander, sprich für jeden eine. Was da aber zu beachten ist das ich die Drucker auswählen kann an wenn ich drucken möchte.

Habe schon gelesen das es unter Windows 9.x, ME, NT4 und 2000 in PHP 4.0.4 einen Druckbefehl gibt den ich aber nicht nutzen kann da ich einen XP Rechner habe. Das ganze läuft local über xampp, evt. später über einen windows server.

mfg Frank

  1. Hallo Frank,

    mit PHP wirst Du wohl keinen Erfolg haben. JavaScript bietet die print()-Methode hierfür an. Es öffnet sich dann der Standarddruckdialog, indem Du den entsprechenden Drucher auswählen mußt.

    Mit freundlichem Gruß
    Micha

    1. Hallo Micha,

      danke für die schnelle Antwort. Werde das mal testen. Aber JavaScript kann ich dann nicht übergeben welchen Drucker er nehmen soll Sprich ich muss einen als Standard Drucker auswählen im Windows und denn 2 Druck manuell ändern.

      mfg

      Frank

      1. Hellihello

        schaumal hier (ich habe das in einer *.hta Datei - also Windows)

          
          
        function druckenMitJs1() {  
          
         IExplorer = new ActiveXObject("InternetExplorer.Application");  
         WshShell = new ActiveXObject("WScript.Shell");  
          
         // hier muss die Location rein, als "irgendwas.htm" zB.  
                meinExNav = IExplorer.Navigate(varDruckenAnker.href);  
          
         // ' Warten bis der IE die Site komplett geladen hat  
         while (IExplorer.ReadyState != 4) {  
          warten="warten";  
          //alert(IExplorer.ReadyState);  
         }  
         var OLECMDID_PRINT = 6;  
         var OLECMDEXECOPT_DONTPROMPTUSER = 2;  
         var PRINT_WAITFORCOMPLETION = 2;  
         var OLECMDEXECOPT_PROMPTUSER = 1;  
         IExplorer.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER);  
         //IExplorer.document.window  
         //alert(varDruckenAnker.href);  
        // if (zweimal =="zweimal") alert("zweimal");  
        }  
        
        

        Gruß,

        frankx

        1. Schaut auch ganz nett aus aber dafür müsste ich mir das sehr genau anschauen um alles zu verstehen.

          Mit dem JS geht das ganz gut kann auch alles soweit ansprechen müsste nur mal eben schnell wissen wie ich die Kopf und Fußzeile nicht mitdrucke.

          mfg Frank

          1. Hallo Frank,

            die Kopf und Fußzeile nicht mitdrucke.

            Duch eine zweite CSS, die Du via media="print" ausgibst und in dieser die Kopf- und Fußleiste auf display: none; setzt.

            Mit freundlichem Gruß
            Micha

  2. Hello,

    man kann mit PHP auch auf einen Drucker drucken, der am Server (oder am Netzwerk) angeschlossen ist.

    Dazu muss der Drucker mit einem Ausgabekanal verbunden sein auf dem Server, auf dem PHP läuft. Üblich sind dafür die Bezeichnungen LPT1 bis LPT9

    Mit fopen('LPT1', 'wb') kannst Du den Kanal dann ansprechen, und die Druckausgabe dorthin leiten, also so, als würdest Du eine Datei beschreiben.

    Kann sein, dass eine Initialisierungssequenz vorausgeschickt werden muss und eine Abschlusssequenz. Da muss ich selber nochmal googlen. Ich habe das zu lange nicht mehr gemacht.
    Es stand aber auch mMn irgendwo im PHP-Handbuch.

    Der Nachteil ist: die Ausgabe findet auf Zeichenebene statt, also quasi im "DOS-Mode"
    Der Vorteil dieser Methode ist, dass der Druckdialog von Windows nicht kommt.

    Du kannst an viele Drucker auch Postscript ausgeben. Das lässt sich mit PHP auch erzeugen.
    Wenn Du einen Kyocera Laser hast, geht es auch mit den Kyo-Befehlen wunderbar.

    Harzliche Grüße vom Berg
    http://bergpost.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

  3. Hi there,

    ich bin dabei eine kleine Werkstatt-Software zu erstellen. Die ist jetzt auch so gut wie fertig. Mein Problem ist das für den Kunden und dem Rechner ein sogenannte Bearbeitungsnummer ausgedruckt werden soll. Dazu stehen mir 2 Netzwerkdrucker zu Verfügung. Ein son kleiner Kassenbon-Drucker für den Kunden, wie auch ein Etikettendrucker für die Ware.

    Die für Dein Problem aus meiner Sicht einzige Lösung besteht im Erzeugen einer PDF-Datei. Alles andere ist mehr oder weniger Pfusch oder funktioniert so halb nur auf bestimmten System etc...
    Ich verwende für ähnliche Anwendungen fpdf...