Beheben von Timeout-Fehlern bei Postscript-Druckern


Bei meinem Postscript-Drucker (ein HP Laserjet 2100M) trat folgendes
Problem auf:
Nachdem ich im Drucker die Option Postscript-Fehler drucken aktiviert
hatte, warf der Drucker mir nach jedem Druckjob nach einer längeren
Zeit eine Seite mit folgenden Inhalt aus:

Die Lösung hierfür ist recht einfach :

Eine korrekte /etc/printcap für den lpd-Druckerdaemon ist:

Mit dieser Konfiguration wird keine Titelseite gedruckt (sh), es sind beliebig
grosse Dateien erlaubt (mx) , der Drucker ist an lp1 angeschlossen (lp) und ein
Spoolverzeichnis (sd) ist auch vorhanden.
Jede Postscript-Datei wurde hiermit sofort und ohne Fehler gedruckt.
Der Timeout-Fehler ist aber immer noch vorhanden !

Es ist also notwendig dem Drucker zusätzlich nach jeder gesendeten Postscript-Datei
ein END-OF-JOB zu schicken, damit er weiss, dass der aktuelle Druckjob zu Ende ist.
Das END-OF-JOB Zeichen entspricht dem CRTL-D oder auch 0x04.
Die einfachste Methode, nach jedem Druckjob ein CRTL-D an den Drucker zu schicken
ist die Benutzung eines Input-Filters des Spooling-Systems.

Man braucht nur noch einen Input-Filter einzufügen, der jede Postscript-
Datei 1:1 durchlässt und danach ein CTRL-D anhängt.
Die erweiterte /etc/printcap sieht dann so aus:


Der Filter ps_eoj ist ein einfaches Shell-Script:


In diesem Script liest cat von der Standardeingabe und schreibt auf die
Standard-Ausgabe. Anschliessend wird einfach das CRTL-D hinterhergeschrieben.
Mit dieser Lösung arbeitet mein Drucker jetzt korrekt, und erkennt auch
sofort, wann ein Druckjob beendet ist.
Wer noch weitere Fragen zum Drucken mit Postscript-Druckern oder zum lpd-Druckerdaemon
hat, schreibe einfach an std7119@et.fh-osnabrueck.de oder an die LUGO.

Viel Spass beim Drucken...
Martin

[Zurück]