Hallo Liste, ... bin seit Tagen am Googeln und Testen und finde noch keine Lösung. Und zwar muss ich PCL-Dateien, die an einen Designjet800PS-Plotter über den Samba-Server und CUPS geschickt werden auswerten, um die Kosten entsprechend zu verrechnen. Dazu brauche ich 1. Seitengrösse und 2. Seitenzahl Die Seitengrösse kann ich aus der Plotdatei ohne Probleme auslesen, bei der Seitenanzahl habe ich bisher keine Lösung. Für Postscriptdateien ist es kein Problem, mit Ghostscript die Seitenzahl zu ermitteln (Konvertierung in jpeg-Dateien und Anzahl Dateien zählen), bei PCL habe ich für Linux aber noch nichts gefunden. GhostPCL scheint mit den Files nicht zu funktionieren, es kommt nichts Vernünftiges heraus. Hat irgend jemand eine Idee, wie ich a. entweder aus der Datei die Seitenzahl auslese oder b. die PCL-Datei z.B. in tiff-Dateien plotte um zu sehen, wieviele Seiten gedruckt wurden? Freeware-Lösung wäre prima, könnte aber auch kommerziell sein, wenn es preislich im Rahmen ist. Viele Grüsse Joachim
Joachim Kieferle wrote:
Hallo Liste,
Hallo Joachim,
... bin seit Tagen am Googeln und Testen und finde noch keine Lösung. Und zwar muss ich PCL-Dateien, die an einen Designjet800PS-Plotter über den Samba-Server und CUPS geschickt werden auswerten, um die Kosten entsprechend zu verrechnen.
/usr/share/doc/packages/cups/PrintAnalyzer Das sollte das tun. Bei SUSE 9.1 dabei. ciao T
Dr. Thorsten Brandau wrote:
Joachim Kieferle wrote:
Hallo Liste,
Hallo Joachim,
... bin seit Tagen am Googeln und Testen und finde noch keine Lösung. Und zwar muss ich PCL-Dateien, die an einen Designjet800PS-Plotter über den Samba-Server und CUPS geschickt werden auswerten, um die Kosten entsprechend zu verrechnen.
/usr/share/doc/packages/cups/PrintAnalyzer
Das sollte das tun.
[ ... ] Hallo Thorsten, vielen Dank, aber das funktioniert leider _nicht_. Denn es wertet die /var/log/cups/page_log aus und da ich "RAW" drucke (d.h. Windows-Clients schicken Daten einfach unbehandelt über den Linux-Server) werden die Files auch nicht untersucht. Es gibt jeweils nur "1 Seite und 1 Ausdruck" an. Deshalb puffere ich jetzt immer die Datei zwischen und hole aus den eigentlichen Plotdateien per Cronjob die Informationen heraus. Viele Grüsse Joachim
Am Freitag, 1. Oktober 2004 11:17 schrieb Joachim Kieferle:
Hallo Liste,
... bin seit Tagen am Googeln und Testen und finde noch keine Lösung. Und zwar muss ich PCL-Dateien, die an einen Designjet800PS-Plotter über den Samba-Server und CUPS geschickt werden auswerten, um die Kosten entsprechend zu verrechnen.
Dazu brauche ich 1. Seitengrösse und 2. Seitenzahl
Die Seitengrösse kann ich aus der Plotdatei ohne Probleme auslesen, bei der Seitenanzahl habe ich bisher keine Lösung.
Für Postscriptdateien ist es kein Problem, mit Ghostscript die Seitenzahl zu ermitteln (Konvertierung in jpeg-Dateien und Anzahl Dateien zählen), bei PCL habe ich für Linux aber noch nichts gefunden. GhostPCL scheint mit den Files nicht zu funktionieren, es kommt nichts Vernünftiges heraus. Hat irgend jemand eine Idee, wie ich a. entweder aus der Datei die Seitenzahl auslese oder b. die PCL-Datei z.B. in tiff-Dateien plotte um zu sehen, wieviele Seiten gedruckt wurden?
Freeware-Lösung wäre prima, könnte aber auch kommerziell sein, wenn es preislich im Rahmen ist.
Viele Grüsse
Joachim
Hi Joachim, zu a.: im PCL-Datenstrom sollte folgendes zu finden sein (PCL5[e]): ...{ESC}&l{NCOPIES}X... wobei {ESC} für das Escape-Zeichen \033 und {NCOPIES} >=1 ist. Viele Grüße Mario
Hallo, On Oct 1 14:16 Mario Goppold wrote (shortened):
im PCL-Datenstrom sollte folgendes zu finden sein (PCL5[e]): ...{ESC}&l{NCOPIES}X...
wobei {ESC} für das Escape-Zeichen \033 und {NCOPIES} >=1 ist.
Ist das nicht nur optional und legt das nicht fest, wieviele Kopien jeder einzelnen Seite der Drucker drucken soll? Eine zuverlässig funktionierende PCL-Sequenz, die den Seitenvorschub auslöst, wäre zuallererst wichtig. Ich denke, die einzige zuverlässige Methode ist, einen Drucker (oder Plotter) mit internem Seitenzähler zu haben und vor und nach jedem Druckauftrag diesen Seitenzähler zu lesen (normalerweise bei Netzwerkdruckern via SNMP) und den Zähler in eine Log-Datei zu schreiben, vergl: http://w3.suse.de/~jsmeix/LPRng-HOWTO.html#AEN9562 Vor und nach jedem Druckauftrag ist nötig, um bei abgebrochenen oder sonstwie gestörten Druckaufträgen dennoch die korrekte Seitenzahl ermitteln zu können, vergl: http://w3.suse.de/~jsmeix/LPRng-HOWTO.html#AEN9573 Für CUPS gibt es PyKota, siehe: http://www.librelogiciel.com/software/PyKota/Presentation/action_Presentatio... Gruss, Johannes Meixner -- SUSE LINUX AG, Maxfeldstrasse 5 Mail: jsmeix@suse.de 90409 Nuernberg, Germany WWW: http://www.suse.de/
Johannes Meixner wrote:
Hallo,
On Oct 1 14:16 Mario Goppold wrote (shortened):
im PCL-Datenstrom sollte folgendes zu finden sein (PCL5[e]): ...{ESC}&l{NCOPIES}X...
wobei {ESC} für das Escape-Zeichen \033 und {NCOPIES} >=1 ist.
Ist das nicht nur optional und legt das nicht fest, wieviele Kopien jeder einzelnen Seite der Drucker drucken soll?
Eine zuverlässig funktionierende PCL-Sequenz, die den Seitenvorschub auslöst, wäre zuallererst wichtig.
Ich denke, die einzige zuverlässige Methode ist, einen Drucker (oder Plotter) mit internem Seitenzähler zu haben und vor und nach jedem Druckauftrag diesen Seitenzähler zu lesen (normalerweise bei Netzwerkdruckern via SNMP) und den Zähler in eine Log-Datei zu schreiben, vergl: http://w3.suse.de/~jsmeix/LPRng-HOWTO.html#AEN9562
Vor und nach jedem Druckauftrag ist nötig, um bei abgebrochenen oder sonstwie gestörten Druckaufträgen dennoch die korrekte Seitenzahl ermitteln zu können, vergl: http://w3.suse.de/~jsmeix/LPRng-HOWTO.html#AEN9573
Für CUPS gibt es PyKota, siehe: http://www.librelogiciel.com/software/PyKota/Presentation/action_Presentatio...
Hallo Johannes, vielen Dank für die Infos, aber ich habe alles schon (erfolglos) probiert. Der Plotter lässt seine Seitenzahl nicht auslesen (habe z.B. auch snmpget getestet) ;-((. Auch WebJetAdmin liest keine Seitenzahl des Plotters aus. Eine Lösung wäre eventuell, in einem Shell-Skript nach der Escape-Sequenz zu suchen. Auch PyKota bringt kein Ergebnis, da sich die Seitenzahl nicht auslesen lässt. Vielleicht muss ich doch über die ESCAPE-Sequences gehen. Aber Frage: Wie 'greppe' ich eine Escape-Sequenz aus der Binärdatei? Viele Grüsse Joachim
Hallo, On Oct 1 16:50 Joachim Kieferle wrote (shortened):
Johannes Meixner wrote:
Für CUPS gibt es PyKota, siehe: http://www.librelogiciel.com/software/PyKota/Presentation/action_Presentatio...
... Der Plotter lässt seine Seitenzahl nicht auslesen ... Auch PyKota bringt kein Ergebnis, da sich die Seitenzahl nicht auslesen lässt.
Ich kenne PyKota nicht gut genug, aber unter http://www.librelogiciel.com/software/PyKota/News/action_News steht was von "PCL5 parser" - z.B.: ----------------------------------------------------------------- 1.19alpha6 : pykotme now uses pkpgcounter to compute the size of the job. This modification adds PCL5 and soon PCLXL (PCL6) support. You can now get quotes for PCL in addition to PostScript. ----------------------------------------------------------------- Ich würde den PyKota Autor Jerome Alet - alet@librelogiciel.com anschreiben und fragen, ob PCL-Accounting für den betreffenden Plotter tatsächlich funktioniert und wenn ja, würde ich es kaufen. Gruss, Johannes Meixner -- SUSE LINUX AG, Maxfeldstrasse 5 Mail: jsmeix@suse.de 90409 Nuernberg, Germany WWW: http://www.suse.de/
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Friday 01 October 2004 16:50, Joachim Kieferle wrote:
Aber Frage: Wie 'greppe' ich eine Escape-Sequenz aus der Binärdatei?
Vielleicht eine ganz wilde Idee in Perl:
perl -e '$/=$ENV{ESC}; @_=<STDIN>; print @_."\n";'
On Friday 01 October 2004 11:17, Joachim Kieferle wrote:
Hallo Liste,
... bin seit Tagen am Googeln und Testen und finde noch keine Lösung. Und zwar muss ich PCL-Dateien, die an einen Designjet800PS-Plotter über den Samba-Server und CUPS geschickt werden auswerten, um die Kosten entsprechend zu verrechnen.
ich hab den rest des threads nicht gelesen, aber wir verwenden folgendes auch für einen PCL drucker http://www.librelogiciel.com/software/PyKota/action_Presentation -- Regards, Robert ---------- Robert Penz robert dot penz at outertech dot com
Robert Penz wrote:
On Friday 01 October 2004 11:17, Joachim Kieferle wrote:
Hallo Liste,
... bin seit Tagen am Googeln und Testen und finde noch keine Lösung. Und zwar muss ich PCL-Dateien, die an einen Designjet800PS-Plotter über den Samba-Server und CUPS geschickt werden auswerten, um die Kosten entsprechend zu verrechnen.
ich hab den rest des threads nicht gelesen, aber wir verwenden folgendes auch für einen PCL drucker
http://www.librelogiciel.com/software/PyKota/action_Presentation
Hallo Thorsten, Mario, Johannes, Torsten und Robert, vielen Dank für Eure Hilfe. Zuerst mal noch eine Korrektur zu einer meiner ersten Mails: PyKota habe ich doch _nicht_ getestet, ich habe es nur heruntergeladen und dann nicht installiert, weil es viele andere Pakete benötigt (die ich nicht alle installieren und konfigurieren wollte). Es ist also sehr wahrscheinlich, dass es doch ausgezeichnet funktioniert. Habe bei der Suche nach einer Lösung einfach so viel ausprobiert, dass ich da den Überblick verloren habe. Die Lösung habe ich jetzt langsam gefunden, der Durchbruch kam besonders dank Marios Hinweis auf ESC 033. Eventuell ist die Lösung für die/den eine/n oder andere/n auf der Liste interessant, deshalb beschreibe ich es kurz. Wir benutzen das übrigens für eine Plotaccounting-Lösung, die ich unten noch näher beschreibe. 1. Um die Binärdateien in Shellscript verarbeitbares Textformat umzuwandeln, erzeuge ich eine laaaaaange Zeile mit "od", also z.B. od -c --width=100000000 pcldatei.pcl 2. Das pipe ich dann gleich, um nach bestimmten Escape-Sequenzen zu filtern, also z.B. "033 \* o 1", um auf dem DesignJet800 die Zahl der Seiten zu zählen (sprich wie oft dieser String in der Datei vorkommt) oder "033 \* b 0" für Ausdrucke auf einem Laserjet 4/4M. Werden die verschiedenen Seiten des Dokuments mehrfach gedruckt (z.B. Dokument mit 2 Seiten, 5 fach ausgedruckt = insgesamt 10 Seiten), kann ich beim Designjet 800 einfach "od -c --width=100000000 pcldatei.pcl | grep -o "033 \* o 1" | wc -l" eingeben und erhalte dann als Ergebnis 10. Beim Laserjet 4 kommt als Ergebnis 2 raus (er zählt nur die Seiten des Dokuments), da muss ich noch die Sequenz "033 \& l 5 X" auswerten (in dem Fall 5) und mit 2 Seiten multiplizieren. Damit kann ich nun unsere Queues entsprechend auswerten und muss nicht mehr annehmen, dass nur eine Seite geschickt wurde. Das war einer der letzten und kritischen Bausteine im gesamten System. Mit ein paar Shell-scripts und Cron-Jobs haben wir jetzt ein komplettes Plot- und Print-Accountingsystem auf dem Samba / CUPS-Server besonders für die Windows-Clients. Wir machen damit folgendes: - Protokollieren der Ausdrucke. - Nach Ausdruck Rechnungen an die Benutzer mailen. - Gesammelte Abrechnungen je Benutzer/in erstellen. - Nach einigen Tagen automatisch und täglich Mahnungen bei Nichtbezahlen mailen. - Nach noch mehr Tagen säumige Zahler von Ausdrucken sperren und - uns täglich die Umsätze ausrechnen lassen. Das ist jetzt zwar überhaupt keine kommerzielle oder auch nur annähernd perfekte Lösung, funktioniert aber für uns hervorragend. Damit können wir kostendeckend den Studierenden verschiedene Ausdruckmöglichkeiten anbieten. Habe unsere Accounting-Lösung hier etwas auführlicher beschrieben, falls jemand ähnliche Anforderungen hat (z.B. Hochschulen) und bisher noch keine einfache Accounting-Lösung für Samba / CUPS gefunden hat. Ich wäre damals froh gewesen, wenn das schon jemand vor mir gescriptet hätte und ich darauf hätte aufbauen können. Falls also jemand Bedarf haben sollte -> bitte PM an mich, ich kann die Skripte gerne zur Verfügung stellen, viele Grüsse Joachim
Hallo Joachim, ich habe am Wochenende nochmal nachgelesen und um die Methode zu verbessern folgende Hinweise: Eine PCL-Seite wird ausgegeben wenn druckbare Daten im Printbuffer sind und: Reset EcE UEL (Universal Exit Language) Ec%-12345X@PJL EOJ Flush All Pages Ec&r#F ;#=0 all complete,#=1 all pages Page Length Ec&l#F Page Size Ec&l#A Orientation Ec&l#O Paper Source Ec&l#H CtrL auftritt. Jede Seite wird (Ec&l#X) # mal ausgegeben. Zu prüfen wäre noch Ec&a#G Page Select Command # 0 next Side, 1 front side, 2 back side Ec steht für ESC und # für eine Zahl Dieses gilt auch für HPGL, weil von dort erst in den PCL-Modus zurückgeschalten werden muß, um auf die nächste Seite zu kommen. Grüße, Mario
participants (6)
-
Dr. Thorsten Brandau
-
Joachim Kieferle
-
Johannes Meixner
-
Mario Goppold
-
Robert Penz
-
Torsten Förtsch