Drucken via PHP
Frank
- 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
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
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
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
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
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
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
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...