# Drucken mit PHP



## dwex (5. September 2005)

Hallo Leute,

wieder mal hab ich ein Problem bei dem ich ohne eure Hilfe verzweifeln werde!

Also ich würde gerne über einen auf dem Server angeschlossenen Drucker (Druckertreiber unter Windows und XAMMP) Selbst erstellte Rechnungen ausdrucken.
Kann ich mit PHP einen auf dem Server liegenden Drucker ansteuern und wenn ja wie?

Es geht nur um serverseitige Drucke und nicht um Klientseitige!

Vielen Dank für euere Beiträge im Voraus.


----------



## Dr Dau (5. September 2005)

Hallo!

Hmm, ich weiss nicht ob es eine "Drucken" Funktion in PHP gibt.

Die Rechnungen werden ja sicherlich als Datei gespeichert?
Ich denke dass es dann mittels exec() möglich sein sollte das Dokument per Batchdatei an den Drucker zu schicken.
Ich kann dir jetzt aber nicht sagen wie dass funktioniert..... evtl. findest Du dafür ja etwas im Windows Board.
Den Dateinamen würde ich per Variable an die Batchdatei übergeben, bzw. die komplette Batchdatei temporär von PHP anlegen lassen.
Irgendwoher muss die Batchdatei ja die Information herbekommen welches Dokument überhaupt gedruckt werden soll.

So währe jetzt mein Gedankengang.

Gruss Dr Dau


----------



## speedyggg (5. September 2005)

Hallo , einfachste Lösung wird wohl das generieren einer PDF Datei 
mit FPDF sein.

Variablenverarbeitung etc. alles möglich.

SpeedyGGG


----------



## Pendergast (5. September 2005)

Vielleicht helfen dir die Drucker-Funktionen? Musst du selbst rausfinden, ich weiß nur, dass es sie gibt. Nicht, ob es sinnvoll ist, damit zu arbeiten. Aber mit deinem Windows-System erfüllst du auf jeden Fall die erste Voraussetzung, die Funktionen nutzen zu können.


----------



## dwex (5. September 2005)

Hallo zusammen,

@dr dau
Ja leider kann man auch über die Shell keine automatisierungen bezüglich Drucken machen.

@speedyggg
Wie man PDF´s generiert ist mir Klar das weiss ich - aber wie drucke ich die dann automatisiert auf dem Server (und nicht auf der workstation). Also fällt das schon mal flach.

@Pendergast
Danke das werde ich mir mal zu gemüte führen - mal sehen ob es klappt.
Ich melde mich wieder.

Viele Grüße an alle!


----------



## Dr Dau (5. September 2005)

Die Shell soll ja auch nichts automatisieren, sondern ausführen..... der Befehl wird von PHP gesendet/automatisiert.
Mit anderen Worten: so bald das Dokument von PHP erstellt wurde, wird der Befehl  mittels exec() ausgeführt dass das Dokument an den Drucker geschickt werden soll.

Man kann ein Dokument über die Kommandozeile zumindest an einen Netzwerkdrucker schicken (näheres dazu mit "lpr /?" oder Google), evtl. hilft dir das ja weiter.


----------



## speedyggg (5. September 2005)

Wenn du von Server und Workstation sprichst wirst du wohl ein Netzwerk haben.
Dann kannst du von jeder stelle aus zu deinem Ziel drucken. 
Du bastelst dir ein Batch der deinen freigegebenen Drucker auf LPT1 o.ä mappt. In deinem Fall also auf den Drucker am Server. Wenn du das Dokument dann generiert hast einfach auf dem Drucker drucken.


----------



## dwex (6. September 2005)

Hallo,

@dr dau
Hey das mit LPR ist klasse - nur leider kann ich keine PDF-Dateien senden. Hier bekomme ich einige Seiten ausgeworfen mit Text.

Das ganze sieht so aus:
%PDF-1.2
%(Irgendwelche Zeichen)
4 0 obj
<<
/Type/Page
usw. usw. usw.

Auf den Folgeseiten kommen dann nur wirre Zeichen.

Was da passiert ist mir schon klar - er kann die gesendete Datei nicht interpretieren und gibt eben die ASCII-Sätze dafür aus.
Aber wie kann ich es schaffen das er mir die PDF-Datei auch richtig ausgiebt?


----------



## Dr Dau (6. September 2005)

Hmm, gute Frage.
Evtl. muss ja irgend ein Parameter mitgesendet werden.

Ich würde ja gerne ein wenig rumprobieren, denn es scheint eine interessante Sache zu sein.
Nur leider verschwinden die Druckaufträge im Datennirvana. 
Am Drucker liegt es jedenfalls nicht, denn der hängt bei mir am Linux Router und wird per LPR (aus der Anwendung heraus) von jedem Clienten angesprochen.
Wie nun mal üblich, ist die Hilfe auch nicht wirklich eine Hilfe. 

Evtl. findest Du hier ja noch etwas.


----------



## dwex (6. September 2005)

Hallo,

also wenn ich bei mir folgendes auf der Kommandozeile eingebe dann druckt mein EPSON AL-C4000 Advanced was aus.


```
lpr -S XXX.XXX.XXX.XXX -P EPSON AL-C4000 Advanced test.txt
```

Die XXX.XXX usw. sind die Platzhalter für die IP-Adresse meines Druckers.
Der Druckername ist der Name welchen der Druckertreiber unter Windows hat.
In der test.txt stehen nur ein paar Zeilen Text.

Das würde ja im Prinzip schon reichen - nur leider hat man mit ASCII und einer Textdatei nicht gerade viele Gestaltungsfreiräume.

Was ich rausgefunden habe ist, dass es von HP für die meisten Laserdrucker eine Plugin-Karte gibt welche PDF- und JPG-Dateien direkt verarbeiten kann - das Modul heisst "JetCaps". Eine Anfrage beim Epson-Support hat bisher nocht nichts gebracht - die wollen mich zurückrufen.


----------



## Dr Dau (6. September 2005)

So habe ich es ja auch gemacht, nur dass ich den Drucker nicht mit dem Druckernamen, sondern mit der Druckerqueue.
In meinem Fall also pr1 für den ersten angeschlossenen Drucker.
Soweit scheint es ja auch zu funktionieren, der Drucker zuckt kurz, aber er macht keinerlei Anstalten irgendwas zu drucken.
Weder eine PDF Datei, noch eine ASCII Datei.

Hmm, so eine Plugin Karte währe sicherlich die elegantere Lösung, sofern es solche auch für dein Drucker gibt..... und sie nicht grad ein paar Hundert € kostet.
Da Du ja von Rechnungen redest, gehe ich davon aus dass es gewerblich ist..... dann würde so eine Karte ja auch unter die Betriebskosten fallen. 

Dass der Epson-Support dich zurückrufen will, zeigt ja zumindest schonmal dass deine Anfrage nicht einfach ignoriert wird. 
Evtl. haben die Experten ja auch eine andere Lösung parat.
Hoffentlich hast Du deine Anfrage auch ausführlich gestellt..... also z.b. auch dass Du es schon mit LPR versucht hast und was dabei rausgekommen ist.
Zumindest kannst Du deine Rechnungen ja überhaupt drucken..... hoffentlich sind es nicht zu viele.

Im Windows-Forum hat dir ja auch noch niemand geantwortet..... das Problem scheint wohl doch etwas zu speziell zu sein. 
Wobei das Thema andere aber sicherlich auch interessiert.


----------



## dwex (6. September 2005)

Hallo,

leider habe ich von Epson-Support (noch) nichts gehört - mal sehen was die mir für Lösungen bieten.

Die Plugin-Karte kostet bei HP so um die 250 Euro.

Ja es sollen Rechnung gedruckt werden - ob das ganze dann gewerblichen Charakter hat dem ist nicht so.
Es ist ein Nebengewerbe von mir mit Onlineshop mit dem ich im Jahr keine 2.000 Euro Umsatz mache - aber ich habe mir eben was geschrieben mit dem ich die PDF-Dateien bei uns in der Firma drucken könnte wenn denn das automatisch ablaufen würde.

Ich werde mir erstmal damit behelfen, dass ich einfache TXT-Dateien generiere und die dann ausdrucken lasse. Das ist zwar nicht schön - aber dafür selten   

Sobald ich näheres von Epson-Support weiss werde ich in jedem Fall wieder etwas posten - sollte bis dahin noch jemand eine Idee haben wäre ich natürlich sehr dankbar dafür.


----------



## dwex (7. September 2005)

Hallo,

also der Epson-Support hat mich gerade angerufen und mir mitgeteilt, dass es kein Modul für PDF-Direkt-Druck wie bei HP gibt und auch nicht geben wird - Schade!

So jetzt weiss ich, dass mein Drucker PCL5E versteht - was auch immer das sein mag - gibt es eine Dokumentation darüber - weiss das jemand?

Viele Grüße


----------



## Dennis Wronka (7. September 2005)

Google wird Dir wahrscheinlich ein paar 1000 Seiten ueber PCL ausspucken koenne.
PCL ist uebrigens, wie auch PostScript, eine Druckersprache.


----------



## dwex (7. September 2005)

Ja Google spuckt ein paar 1000 Seiten aus auf denen es eigentlich immer um irgendwelche Druckerspezifikationen geht - aber was ich brauche ist eine Dokumentation wie man solche Dateien erstellen kann.

Bei Google habe ich heute schon 2 Stunden gesucht.


----------



## Dennis Wronka (7. September 2005)

Vielleicht hilft Dir ja RFC 3805 - Printer MIB v2.


----------



## dwex (13. September 2005)

Hallo Leute,

ich muss jetzt nochmal diesen Thread rauskramen.
Leider bin ich bezüglich der Programmierung von PCL immer noch nicht weiter - auch die RFC-Doku von reptiler hat mir nicht sonderlich auf die Sprünge geholfen.
Weiss denn keiner Rat?


----------

