PHP Direkten Druckauftrag an Drucker - vom Server aus schicken [WIN]

mbassus

Well-known member
ID: 104267
L
23 April 2006
5.068
446
Hallo zusammen,

ich versuche gerade, Druckaufträge direkt an den USB Laserdrucker zu senden. Bei meiner "Google-Arbeit" bin ich auf die PHP_PRINTER.DLL gestoßen, die unter aktuellen PHP Versionen aber wohl nicht mehr funktioniert.

Da DOS ja nur mit dem LPT-Anschlüssen Arbeitet (und man so nicht auf den Drucker zugreifen könnte) - hab ich den USB Drucker im Netzwerk als "Drucker" freigegeben - und dann per "net use" auf den LTP1 gelegt. Soweit so gut - das klappt auch.

Ich hab mir dann folgendes PHP Skript geschrieben:
PHP:
<?php 
set_time_limit(6000);
$array[]="------Blablabla --------";
$array[]=date("d.m.Y - H:i:s"). " - Tisch 28";
$array[]="Bedienung: Mayer (38)";
$array[]="------------------------";
$array[]="Pos ------------------- Stk - Preis";
$array[]="Bier                    3 - 2,80 Euro €";
$array[]="Wein                    1 - 4,80 Euro €";
$array[]="Wurst                   2 - 1,80 Euro €";
$array[]="Wasser                  1 - 8,80 Euro €";
foreach($array as $val) {
system("echo ^ >prn ".$val);
}

sleep(60);
foreach($array as $val) {
system("echo ^ >prn ".$val);
}
?>


Soweit so gut - das funktioniert auch - der Drucker druckt. Allerdings - ohne das sleep(); packt er immer alles auf eine Seite.. manchmal auch Zufallsweise. Ist es irgendwie möglich, dem Drucker einzelne "Druckaufträge" zu geben, so das man meinetwegen auch mehrere Druckaufträge in wenigen Sekunden hintereinander schicken kann - und diese einzeln gedruckt werden?

Von mir aus können diese "Aufträge" vorher auch gern in einzelnen Text-Dateien liegen, wenn es dafür notwendig ist.

Danke und Liebe Grüße,
Martin
 
Wie wäre es denn mit einem deutlich sinnvollerem Vorgehen bei dem du mit PHP PDFs erzeugst und dann mit irgendeinem Tool per Kommandozeilenbefehl das PDF druckst? Da gibt es dann genug Möglichkeiten.

Dein jetziger Ansatz ist pure Frickelei und geht schneller kaputt als man ihn zuschauen kann :biggrin:
 
Hallo,

Damit schon mal "rumgespielt"?
Setzt allerdings eine PECL-Bibliothek voraus, keine Ahnung ob die beim XAMPP(?) dabei ist...

Gruß
 
Wie wäre es denn mit einem deutlich sinnvollerem Vorgehen bei dem du mit PHP PDFs erzeugst und dann mit irgendeinem Tool per Kommandozeilenbefehl das PDF druckst? Da gibt es dann genug Möglichkeiten.
Danke - den Wald vor lauter Bäumen nicht gesehen.. das wär natürlich auch eine Lösung..
Kannst du mir schnell sagen, wie man möglichst einfach per Kommandozeile ein PDF druckt? Bin da sehr unerfahren ... :mrgreen:
Hallo,

Damit schon mal "rumgespielt"?
Setzt allerdings eine PECL-Bibliothek voraus, keine Ahnung ob die beim XAMPP(?) dabei ist...

Jap, ich Spiel grad mit XAMPP.. hab die PHP_PRINTER.DLL auch schon probiert (siehe erstes Post).. aber ist wohl nicht mehr für aktuelle Versionen von PHP Supportet und schmeißt nur Fehler.. :(
 
Unter DOS wird's da kaum Sachen geben, eher unter Linux und da gibt's laut der Seite lpr. Außerdem wäre das System wesentlich aktueller, als irgendwelches Krüppel-DOS und von Sicherheit mal gar nicht zu reden - Zugriffe von außen z. B.
 
Unter DOS wird's da kaum Sachen geben, eher unter Linux und da gibt's laut der Seite lpr. Außerdem wäre das System wesentlich aktueller, als irgendwelches Krüppel-DOS und von Sicherheit mal gar nicht zu reden - Zugriffe von außen z. B.
Ist und bleibt ein Lokales System, das auch nicht nach draußen telefoniert, wäre daher egal.... Aber ich hab die Lösung, Poste ich gleich :)
 
Ach mist, doch nicht.

@ice-breaker - mir fällt grad ein, PDF geht auch nicht, da es sich hier um einen BON-Drucker handelt...und wenn du dem ein PDF schickst, dreht der völlig durch .. :-?
 
auch ein Bon-Drucker wird über irgendein Protokoll oder Druck-Modus ansprechbar sein, einfach mal auf gut Glück Zeichen zum Drucker zu schicken geht nunmal schief.

Btw.: Der ASCII- Zeichensatz enthält Steuersignale von denen auch einige u.A. damals für Drucker gedacht waren.
 
Hast Du Unterlagen zum BON_Drucker? Versteht der vielleicht irgendwelche Steuerzeichen/Escape-Sequenzen, die Du auf dem gleichen Weg an den Drucker schicken kannst?
 
Leider nein,

aber ich habe nun einen anderen Lösungsansatz.

Es gibt doch eine aktuelle Extension dafür...
Quelle: https://downloads.php.net/pierre/ (PHP_PRINTER)

Apache schnell neustarten..

Und dann Feuer:

PHP:
<?php 
$array[]='------JUST 1 --------';
$array[]=date("d.m.Y - H:i:s"). " - Tisch 14";
$array[]="Bedienung: Mayer (38)";
$array[]="------------------------";
$array[]="Pos ------------------- Stk - Preis";
$array[]="Bier                    3 - 2,80 Euro €";
$array[]="Wein                    1 - 4,80 Euro €";
$array[]="Wurst                   2 - 1,80 Euro €";
$array[]="Wasser                  1 - 8,80 Euro €";

var_dump(printer_list(PRINTER_ENUM_LOCAL));

$printer = "DRUCKER";
$content="";
if($ph = printer_open($printer)) {
    printer_start_doc($ph, "BON -".rand(1,20000));

   foreach ($array as $val) {
   $content.= $val." 
   ";
   }
   
   printer_write($ph, $content);

   printer_end_doc($ph);
   printer_close($ph);
} else {
    echo "cant do anything.. sorry";
}
?>
So ist das Problem dann gelöst.. Vielen Dank für eure Hilfe!