Kapitel 12 Druckerbetrieb Im Rahmen der Installation mit YaST haben Sie wahrscheinlich bereits die erste Druckerkonfiguration unter Linux hinter sich (vgl. Abschnitt 3.6.1 auf Seite 100). Dieses Kapitel zeigt nun das Wesentliche der Vorgänge hinter den Kulissen": nicht eben jede Einzelheit, aber doch so detailliert, dass Sie das Grundschema der Abläufe im Druckerbetrieb verstehen können. 12.1 Überblick: Schnittstellen, Warteschlangen (Spooling) Die parallelen Schnittstellen Der Anschluss eines Druckers an ein Linux-System erfolgt in der Regel über eine parallele Schnittstelle. Seit dem Kernel 2.2.xx gibt es das parport-Subsystem, dem die parallelen Schnittstellen durch Laden architekturspezifischer Zusatztreiber bekanntzu- machen sind (vgl. Abschnitt 10.4.3 auf Seite 302 ff.). So können nun meh- rere, in Kette geschaltete Geräte über eine parallele Schnittstelle gleichzei- tig bedient werden. Zudem beginnt die Zählung der Gerätedateien für den Drucker jetzt standardmäßig bei /dev/lp0! Um über die erste parallele Schnittstelle drucken zu können, müssen beim SuSE-Standardkernel die Mo- dule parport, parport_pc und lp geladen sein ­ dies erledigt der kmod (engl. Kernel Module Loader) in der Regel automatisch (vgl. Abschnitt 13.2 auf Seite 355), sobald ein Druckauftrag abgeschickt wird. Wenn die parallele Schnittstelle nicht gefunden wird, können Sie mit Kernel-Parametern nach- helfen; vgl. auch auf Seite 393 f. Sie können zum Test von Schnittstelle und Drucker mit einem Befehl wie erde: # echo hello > /dev/lp0 oder erde: # cat TEXTDATEI > /dev/lp0 direkt Daten zur Schnittstelle hinausschicken, aber nur als `root' ( Sys- temadministrator)! Für Normalbetrieb ist dieses Verfahren in einem Multitas- king-System ganz ungeeignet, da jederzeit mit Druck-Wünschen von mehre- ren Prozessen parallel zu rechnen ist und am Drucker ein heilloses Durchein- ander ausbräche. Statt dessen werden Druckaufträge über Druckwarteschlan- gen (engl. Queues) abgewickelt. Die Schnittstellen arbeiten standardmäßig im Polling-Betrieb (die CPU muss regelmäßig bei ihnen anfragen, ob ein Datentransfer ansteht). Der Systemver- 331 12. Druckerbetrieb walter `root' kann sie beim Laden des parport-Systems oder über das /proc-Dateisystem auf den etwas günstigeren Interrupt-Betrieb umstellen sowie mit dem Programm tunelp weitere Einstellungen zur Leistungssteige- rung vornehmen, vgl. die Manual-Page von tunelp (man tunelp) sowie die in Abschnitt 10.4.3 auf Seite 302 ff. genannten Dokumente bei den Ker- nelquellen. Überprüfen Sie aber vorher die IRQ- und Port-Einstellungen an der Schnittstellen-Hardware (das geschieht meist im BIOS oder per Jum- per)! Spooling-Betrieb, Druckwarteschlangen Unter Linux werden Drucker, wie auch bei anderen Multitasking-Systemen, über einen Spooling"-Mechanismus (Druckwarteschlangen) angesprochen, d. h. die Druckaufträge werden zunächst in temporären Dateien zwischenge- speichert und unter Kontrolle eines Steuerprogramms (Daemons) der Reihe nach abgearbeitet. So können mehrere Anwender gleichzeitig Druckaufträge an das System schicken, ohne dass es zu Konflikten kommt. Nach dem Ab- schicken eines Druckauftrags kann der Anwender sofort weiterarbeiten, ohne auf den Drucker warten zu müssen. Eine Druckwarteschlange besteht aus * einem Eintrag in /etc/printcap, der die Warteschlange definiert; * einem Verzeichnis, üblicherweise unter /var/spool/lpd, in das für jeden Druckjob eine Datendatei und eine Steuerdatei gestellt werden. Jede Warteschlange wird von genau einem Drucker abgearbeitet. Es können mehrere Warteschlangen für ein und denselben Drucker eingerichtet werden. SuSE Linux enthält das BSD-Spooling-System der University of California at Berkeley im Paket lprold. Es ist grundsätzlich für den Betrieb übers Netzwerk angelegt und setzt voraus, dass TCP/IP konfiguriert ist und läuft. Für die Konfiguration ist es nur ein ganz geringer Unterschied, ob Druckwar- teschlangen lokal oder auf entfernten Rechnern eingerichtet und verwendet werden sollen. Die Abarbeitung eines Druckjobs unter Linux erfolgt in drei Schritten: * Die Datendatei wird in das Verzeichnis einer Druckwarteschlange kopiert und mit einer neu angelegten Steuerdatei zu einem Job vervollständigt. * Die Datendatei wird nach Maßgabe der Steuerdatei durch ein Filterpro- gramm geschickt, das aus ihr eine Folge von Anweisungen für den be- treffenden Drucker erzeugt; d. h. das Filterprogramm stellt einen Daten- strom im druckerspezifischen Format her, z. B. PostScript, PCL, Esc/P2 etc.). Diese Konvertierung kann mehr als einen Teilschritt umfassen und wird bei SuSE Linux vom apsfilter (Paket aps) erledigt; vgl. unten Ab- schnitt 12.3 auf Seite 334 ff. * Die druckerspezifische Datei wird, gemäß der Reihenfolge in der Druck- warteschlange, auf den Drucker ausgegeben. 332 12.2. Druckwarteschlangen: Betrieb und Konfiguration 12.2 Druckwarteschlangen: Betrieb und Konfiguration Am besten schauen wir uns einmal der Reihe nach an, bei welchen Stationen ein Druckauftrag auf seinem Weg von der Anwenderdatei zum Drucker vor- beikommt und welche Programme sich Schritt für Schritt um ihn kümmern. Viele der Einzelheiten, die wir hier der Kürze halber übergehen müssen, finden sich in der Manual-Page von lpr (man 1 lpr), der Manual- Page von lpd (man 8 lpd) und der Manual-Page von printcap (man 5 printcap). lpr: Bitte hinten anstellen! Der lpr ist die alltägliche Anwenderschnittstelle" zu den vorhandenen Druckwarteschlangen. Im allgemeinen wird ein Job in Auftrag gegeben mit einem einfachen Befehl wie tux@erde: > lpr [-Pwarteschlange] textdatei Wenn Sie die Option -P ( Printer", für den Warteschlangen-Namen) weg- lassen, ist die Voreinstellung der Inhalt der Umgebungsvariablen PRINTER. Ist diese leer, so wird der traditionelle Standard-Warteschlangenname lp ver- wendet. Dies gilt übrigens ebenso für lpq und lprm (s. u.). Zwischen der Option -P und dem Druckernamen warteschlange darf kein Leerzeichen stehen. lpr prüft anhand der /etc/printcap, ob die angegebene Warteschlange vorhanden ist. Wenn ja, erzeugt er für den Job die Steuerdatei (cf-Datei) und eine Kopie der Datendatei und übergibt das dem Druckmanager lpd, der den Job ins Spool-Verzeichnis der Warteschlange aufnimmt. Bei besonders großen Druckaufträgen kann es zweckmäßig sein, anstatt einer Kopie der Datendatei einen symbolischen Link darauf ins Spool-Verzeichnis stellen zu lassen. Dies leistet die lpr-Option -s. Natürlich sollten Sie dann auf Schreibzugriffe auf diese Datei verzichten, bis der Druckjob beendet ist! lpr erlaubt Ihnen mit Zusatzoptionen, von Hand einen bestimmten Filter (Druckertreiber) für Ihren Job auszuwählen (dies dürfte nur selten nötig sein). Mehr dazu in der Manpage zum lpr und im Abschnitt 12.3 auf Seite 335 über Filter. Zusatz- und Steuertools für den Anwender: Überblick Zum Verwalten von Druckerwarteschlangen gibt es das nette graphische Pro- gramm Paket xlpq, Serie xap; beachten Sie aber bitte, dass die im Folgen- den genannten Kommandozeilen-Tools aufgrund zusätzlicher Optionen noch etwas mehr können. Für Manipulationen an den Druckwarteschlangen brauchen Sie `root'- Rechte, d. h. wenn Sie beispielsweise fremde Druckaufträge löschen wol- len, müssen Sie als `root' arbeiten. 333 12. Druckerbetrieb * lpq zeigt eigene Jobs in einer Warteschlange (Option -P) an; z. B. produ- ziert die Eingabe tux@erde: > lpq -Pwarteschlange das Ergebnis in Ausgabe 12.2.1 auf der nächsten Seite. warteschlange is ready and printing Rank Owner Job Files Total Size active tux 676 Hallo.txt 259420 bytes 1st tux 677 brief.dvi 11578 bytes 2nd tux 683 bild.gif 37464 bytes Ausgabe 12.2.1: Beispiel einer Ausgabe des Befehls lpq. * lprm löscht eigene Jobs aus einer Warteschlange; z. B. produziert die Eingabe tux@erde: > lprm -Pwarteschlange 676 das Ergebnis in Ausgabe 12.2.2. dfA676Aa05005 dequeued cfA676Aa05005 dequeued Ausgabe 12.2.2: Beispiel einer Ausgabe des Befehls lprm. Wird keine Jobnummer angegeben, so wird der momentan aktive Job, wenn es ein eigener ist, aus der betreffenden Warteschlange gelöscht. * lpc (mit dem Pfad /usr/sbin/lpc) Steuerung der Warteschlangen. Für den Warteschlangen-Namen kann dabei auch all (= alle) angegeben werden. Die wichtigsten Optionen sind: ­ status warteschlange Gibt einen Statusbericht. Fehlt die An- gabe warteschlange, so wirkt das wie all, d. h. Statusbericht für alle Warteschlangen. ­ disable warteschlange Stoppt die Aufnahme neuer Jobs in die Warteschlange. ­ enable warteschlange Gibt die Warteschlange für die Auf- nahme neuer Jobs frei. ­ stop warteschlange Stoppt das Ausdrucken von Jobs aus der Warteschlange (der gerade im Druck befindliche Job wird noch been- det). ­ start warteschlange Nimmt das Ausdrucken von Jobs aus der Warteschlange wieder auf. ­ down warteschlange Wirkt wie disable plus stop . ­ up warteschlange Wirkt wie enable plus start . ­ abort warteschlange Wirkt wie down, nur dass ein gerade im Druck befindlicher Job sofort abgebrochen wird. Die Jobs bleiben aber erhalten und können nach Restart der Warteschlange (up) weiter bearbeitet werden. 334 12.2. Druckwarteschlangen: Betrieb und Konfiguration Sie können diese Kommandos dem lpc gleich in der Kommandozeile mitgeben (z. B. lpc status). Oder Sie rufen lpc ohne Parameter auf: dann wird ein Dialogmodus mit eigenem Prompt lpc> gestartet, der die Eingabe von lpc-Kommandos erwartet. Mit quit oder exit beenden Sie den Dialog. Druckaufträge bleiben auch in den Warteschlangen erhalten, wenn Sie während eines Druckvorgangs den Rechner bewusst herunterfahren und dann Linux neu starten ­ einen eventuell fehlerhaften Druckauftrag müssen Sie mit den oben vorgestellten Befehlen aus der Warteschlange entfernen. lpd: der Druck-Manager im Hintergrund Der lpd (engl. Line Printer Daemon) wird beim Systemstart durch das Skript /sbin/init.d/lpd aktiviert, wenn in der /etc/rc.config die Va- riable START_LPD=yes gesetzt wurde. Er läuft als Daemon im Hinter- grund. lpd stellt beim Start anhand der /etc/printcap fest, welche Druckwar- teschlangen definiert sind. Seine Aufgabe ist, die Ausführung der gespoolten Jobs zu organisieren: * er managt die lokalen Warteschlangen: er schickt die Datendatei eines jeden Jobs durch den passenden Filter (festgelegt durch den Eintrag der Warteschlange in /etc/printcap sowie durch explizite Angaben in der Job-Steuerdatei) und dann zur Druckerschnittstelle; * er berücksichtigt die Reihenfolge der Jobs in den Druckwarteschlangen; * er überwacht den Status der Warteschlangen und Drucker (Datei status in den lokalen Spool-Verzeichnissen) und gibt auf Verlangen Auskunft darüber; * er leitet Druckaufträge an Warteschlangen auf entfernten Rechnern an den dortigen lpd weiter; * er nimmt Druckaufträge von entfernten Rechnern für lokale Warteschlan- gen an oder weist sie bei ungenügender Autorisierung ab. Autorisierung: Nur Anfragen von entfernten Hosts (engl. remote), die in der Datei /etc/hosts.lpd des Printservers" aufgeführt sind, werden an- genommen; ein Eintrag des Hosts in /etc/hosts.equiv genügt auch, aber dies hat sehr weitreichende Folgen für allgemeine Zugriffsmöglichkei- ten von diesem Host auf den lokalen Rechner; es sollte der Sicherheit wegen möglichst vermieden werden (vgl. im Sicherheitskapitel Abschnitt 18.2.2 auf Seite 472). Zusätze in der Definition der Warteschlange können weiter ein- schränken auf User einer bestimmten Gruppe oder User mit Accounts auf dem lokalen Rechner. Filter: die Arbeitstiere Die Filterprogramme haben die Aufgabe, die Datendatei eines Jobs in das druckerspezifische Format zu überführen (zur Konfiguration vgl. Ab- schnitt 12.3 auf der nächsten Seite). Ihnen obliegt der Löwenanteil der 335 12. Druckerbetrieb eigentlichen Bearbeitung des Druckjobs. Sie entsprechen damit von ihrer Funktion her den Druckertreibern auf anderen Systemen wie Windows oder OS/2. Zusätzlich haben sie auf Wunsch über die Druckjobs abzurechnen: Umfang, verbrauchte Betriebsmittel ... /etc/printcap: Konfiguration der Warteschlangen In der /etc/printcap wird jede verfügbare Druckwarteschlange durch einen einzeiligen Eintrag definiert. Das Newline-Zeichen (Zeilenwechsel) schließt den Eintrag ab: dies kann jedoch ­ für lange Einträge ­ durch einen unmittelbar vorausgehenden Rückstrich `\' aufgehoben werden. Der Eintrag beginnt mit einem oder mehreren Namen für die Warteschlange (Trennzeichen `|' ), gefolgt von einer Liste von Spezifikationen der Form1 kürzel= (Listentrennzeichen `:' ). Leere Zeilen und solche, die mit einem # beginnen, werden ignoriert (Kommentare). In der vorinstallierten /etc/printcap sind bereits eine Anzahl von (aus- kommentierten) Beispieleinträgen enthalten. Ein ganz einfacher Eintrag ohne jeden Filter sieht z. B. aus wie in Datei 12.2.1. ascii|deskjet:lp=/dev/lp0:sd=/var/spool/lpd/ascii:sh:mx#10240 Datei 12.2.1: /etc/printcap: einfache lokale Warteschlange Diese Warteschlange kann unter den Namen ascii und deskjet ange- sprochen werden. Ihr Spoolverzeichnis ist /var/spool/lpd/ascii, ihr Drucker /dev/lp0. Sie gibt keine Titelseiten zu Beginn von Jobs aus (sh bedeutet suppress header") und akzeptiert Druckjobs bis zu 10240 KB. ­ Ein Beispiel für eine Warteschlange auf einem entfernten Rechner finden Sie in Datei 12.2.2; zur Konfiguration vgl. Abschnitt 12.4 auf Seite 341 ff.2 lp1|HP-4P:\ :rm=sonne.kosmos.all:\ :rp=HP:\ :sd=/var/spool/lpd/lp1:\ :mx#0:sh Datei 12.2.2: /etc/printcap: einfache entfernte Warteschlange Die Warteschlange hat die Namen lp1 und HP-4P. Statt der Geräteanga- be (lp=) wird hier auf den Host sonne.kosmos.all und dessen War- teschlange HP verwiesen. Angaben über Filter erübrigen sich ­ dafür ist die Warteschlange auf sonne.kosmos.all zuständig ­, sodass hier nur noch das Spoolverzeichnis /var/spool/lpd/lp1 und die Größenbeschrän- kung für Jobs (mx#0 bedeutet: keine Beschränkung) definiert worden sind. 1 Alle Kürzel samt Bedeutung und Voreinstellung sind in der Manual-Page von printcap (man printcap) beschrieben. 2 Die Rückstriche \ unmittelbar vor dem Zeilenbruch verstecken" diesen ­ genauso wie bei der Eingabe von Shellkommandos ­, sodass der Eintrag als einzeilig gilt. 336 12.3. Druckerfilter ­ der apsfilter" Wenn Sie den apsfilter verwenden, werden bei der Konfiguration die nötigen neuen Druckwarteschlangen automatisch in die /etc/printcap eingetra- gen. Näheres unten in Abschnitt 12.3 auf Seite 337. 12.3 Druckerfilter Was Druckerfilter sind und wie sie arbeiten Wie bereits erwähnt, ist die Aufgabe eines Druckerfilters, die Datendatei ei- nes Druckjobs in das spezifische Format des betreffenden Druckers umzu- wandeln. Ein Filter erhält beim Aufruf durch lpd als Zusatzinformation lediglich Pa- piergröße, Login-Namen und Host des Auftraggebers und den Namen der Da- tei für die Abrechnung. Als echter Unix-Filter erhält er die Datendatei über die Standardeingabe und muss das druckbare Ergebnis über die Standardaus- gabe abliefern. Natürlich muss der Filter für die Konvertierung wissen, welches Dateiformat die Daten haben (ASCII-Text, DVI, PostScript usw.). Es gibt zwei Möglich- keiten, das zu bewerkstelligen: * Der Filter ist intelligent" genug, um selbst an den Daten zu erkennen, welches Format vorliegt. Er ist dann zusammengesetzt aus einem Vor- Filter" zur Formaterkennung und mehreren weiteren Programmen, die die eigentliche Konvertierungsarbeit leisten. Das ist ­ grob gesagt ­ die Arbeitsweise des Programms apsfilter, das in SuSE Linux standardmäßig zur Installation vorgesehen ist. * Verschiedene Filter für verschiedene Dateiformate. Die Filter werden durch Eintrag in die /etc/printcap der Warteschlange zugeordnet; die Auswahl trifft der Benutzer durch eine Zusatzoption beim Aufruf von lpr. Es sind acht Möglichkeiten vorgesehen: printcap Eintrag if= cf= df= gf= nf= rf= tf= vf= lpr Option -c -d -g -n -f -t -v Diese Optionen sind traditionsgemäß3 ganz speziellen Dateiformaten zu- geordnet (zwingend ist aber nur die Zuordnung von lpr-Option zum Fil- tereintrag, nicht die Tradition4). Zum Beispiel bezeichnet if= den Stan- dardfilter und df= den Filter für DVI-Dateien (dem Output von TEX und LATEX). So könnten Sie etwa mit dem Eintrag in Datei 12.3.1 einen ei- genen DVI-Filter für den HP LaserJet 4 bereitstellen, wenn das Paket te_dvilj installiert ist (heutzutage ist es allerdings empfehlenswert, auch bei diesem Drucker den zuständigen Ghostscript- Treiber" ljet4 zu bevorzugen). df="/usr/bin/dvilj4 -e- -" Datei 12.3.1: DVI-Filtereintrag in /etc/printcap 3 Siehe Manpage zu lpr. 4 So ist z. B. ein Nullfiltereintrag" cf=/bin/cat ohne weiteres zulässig und wird bei einem lpr -c Befehl getreulich benutzt. 337 12. Druckerbetrieb apsfilter Das Paket aps stellt mit dem apsfilter einen sehr komfortablen Filter zur Verfügung. apsfilter nutzt die folgenden Umstände aus: * Das Standardformat für druckbare Daten ist in der Unix-Welt PostScript. * Es gibt eine Reihe von Tools, die andere Text- und Bilddateiformate in PostScript-Dateien konvertieren, z. B. dvips für DVI-Dateien, a2ps für ASCII-Dateien, das Paket netpbm, Serie gra für Grafikdaten etc. * Verfügbar ist gleichfalls das mächtige Programm Ghostscript, das imstan- de ist, PostScript-Dateien in eine Vielzahl druckerspezifischer Formate für Nicht-PostScript-Drucker zu überführen (sozusagen eine umfangrei- che Druckertreiber-Sammlung). apsfilter fasst alle diese Programme gemeinsam mit den nötigen Tools zur Formaterkennung (file) und Dekompression unter einem organisatorischen Dach zusammen. Es leitet den Input, abhängig vom Ergebnis der Format- erkennung, der Reihe nach durch alle notwendigen Tools hindurch bis zum druckfertigen Datenstrom. In /var/lib/apsfilter/apsfilter, dem zentralen Shellskript, wer- den die folgenden unterstützten Dateiformate und Kompressionstypen ge- nannt: * ASCII, DVI, PS, Data (PCL, ... ), GIF, TIFF, PBM, Sun Raster, X11- Bitmap * Kompressionstypen: compress, gzip, freeze Die apsfilter-Druckwarteschlangen Das Programm apsfilter bietet für einen lokalen Drucker die folgenden War- teschlangen an: lp ­ Standard-Warteschlange für alle Dateiformate. lp-mono ­ Wird nur bei Farbdruckern angelegt und druckt schwarzweiß, verarbeitet ansonsten wie lp alle Dateiformate. ascii ­ Zum Ausdrucken von Dateien als ASCII-Textdatei, auch wenn das Spooling-System ein anderes Format vermutet5. raw ­ Zum Ausdruck von Dateien, die bereits im druckerspezifischen For- mat sind: es findet keinerlei Konvertierung statt. Sie können auch weitere lokale Drucker konfigurieren; die Warteschlan- gen-Namen enthalten dann zur Unterscheidung den Namen des betref- fenden Ghostscript-Druckertreibers, z. B. djet500, djet500-ascii, djet500-raw usw. ASCII-Dateien: In der /etc/apsfilterrc ist für die Filterung voreinge- stellt: * ASCII-Dateien mit a2ps in PostScript überführen; * a2ps-Format: 2 ASCII-Seiten nebeneinander im Querformat auf eine Druckseite. 5 z. B. bei der Anwesenheit von deutschen Umlauten. 338 12.3. Druckerfilter ­ der apsfilter" Sie können das Format ändern, indem Sie dort die Variable FEATURE auf einen anderen der im Kommentar angebotenen Werte setzen. Wollen Sie die Umwandlung in PostScript überhaupt umgehen und im ASCII-Modus des Druckers ausdrucken, so entfernen Sie das Kommentarzeichen # am Zeilen- anfang des Befehls USE_RECODE_NOT_A2PS=yes und achten Sie darauf, dass das Paket recode, Serie ap installiert ist. apsfilter: Konfiguration apsfilter kann mit YaST oder mit dem eigenen, menügeführten Skript SETUP (lprsetup) konfiguriert werden. Die Konfiguration arbeitet nur dann richtig, wenn in der /etc/ printcap die auskommentierten Kennungen am Anfang und Ende der apsfilter-Einträge nicht verändert werden (vgl. Datei 12.3.2 auf der nächs- ten Seite)! Konfiguration mit YaST Die Druckerkonfiguration mit YaST ist der normale Weg, um einen loka- len Drucker neu einzurichten. Ist bereits eine frühere apsfilter-Konfiguration vorhanden, so fragt YaST zu Beginn, ob die neue Konfiguration die frühe- re überschreiben oder ob die neue Konfiguration zusätzlich hinzugenommen werden soll. Die weitere Vorgehensweise ist bereits im YaST-Abschnitt 3.6.1 auf Seite 100 ff. beschrieben. Wenn Sie Ihre neue Konfiguration installieren lassen, geschieht im einzel- nen folgendes (gleich, ob Sie die Konfiguration mit YaST oder lprsetup definiert haben): * Eintrag der neuen Druckwarteschlangen in /etc/printcap (vgl. auf der vorherigen Seite). * Anlegen der Spoolverzeichnisse dafür unter /var/spool/lpd/. * Anlegen der zugehörigen Druckerfilter unter /var/lib/apsfilter/ bin/ (es handelt sich dabei um symbolische Links auf die Datei /var/ lib/apsfilter/apsfilter). * Anlegen der globalen Konfigurationsdatei /etc/apsfilterrc (falls noch nicht vorhanden) und einer druckerspezifischen Konfigurationsdatei /etc/apsfilterrc.. Hier ist der Ghost- script-Druckername, z. B. bjc800 im folgenden Beispiel. Ein Beispiel für die neuen Warteschlangen-Einträge zeigt Datei 12.3.2 auf der nächsten Seite für den Canon BubbleJet 800. Die drei Einträge sind völlig gleich aufgebaut, daher haben wir ein wenig gekürzt. Sie legen Gerät (lp=), Spoolverzeichnis (sd=), Log-Datei (lf=), Abrechnungs-Datei (af=) und Standardfilter (if=) fest. Unterdrückt werden Header-Blatt zu Beginn (sh) und Seitenvorschub (engl. formfeed) (sf) am Ende eines Jobs. 339 12. Druckerbetrieb ### BEGIN apsfilter: ### bjc800 a4 mono 360 ### # Warning: Configured for apsfil- ter, do not edit the labels! # apsfilter setup Thu Sep 18 11:40:40 MEST 1997 #ascii|lp1|bjc800-a4-ascii-mono-360|bjc800 a4 ascii mo- no 360:\:lp=/dev/lp0:\ :sd=/var/spool/lpd/bjc800-a4-ascii-mono-360:\ :lf=/var/spool/lpd/bjc800-a4-ascii-mono- 360/log:\:af=/var/spool/lpd/bjc800-a4-ascii-mono- 360/acct:\ :if=/var/lib/apsfilter/bin/bjc800-a4-ascii-mono- 360:\ :la@:mx#0:\ :sh:sf: #lp|lp2|bjc800-a4-auto-mono-360|bjc800 a4 auto mono 360:\ # [ ... gekürzt ... ] #raw|lp3|bjc800-a4-raw|bjc800 a4 raw:\ # [ ... gekürzt ... ] ##### END apsfilter: ### bjc800 a4 mono 360 ### Datei 12.3.2: apsfilter Warteschlangen in /etc/printcap Konfiguration mit SETUP (lprsetup) Das Paket aps enthält das Konfigurationsprogramm SETUP (/var/lib/ apsfilter/SETUP), das leicht als lprsetup aufgerufen werden kann. Es bietet die Dienste: * Auflistung aller apsfilter-Druckerkonfigurationen * Hinzufügen und Löschen von apsfilter-Druckerkonfigurationen. Beim Hinzufügen lokaler Drucker tut lprsetup (fast) dasselbe wie YaST. Dazu kann lprsetup auch Warteschlangen anlegen und löschen, die auf entfernte (engl. remote) Hosts verweisen ( entfernte Warteschlangen", vgl. Datei 12.2.2 auf Seite 334) sowie intelligent eine Vorfilterung für Netzwerk- drucker arrangieren. lprsetup ist menügesteuert und ­ nach einer kurzen Einarbeitung ­ un- kompliziert zu bedienen. 1. Rufen Sie lprsetup auf: erde: # lprsetup Falls Sie unter dem X Window System in einem xterm Erkennungs- schwierigkeiten haben (Stichwort: Gelb auf hellem Grau), starten Sie 340 12.3. Druckerfilter ­ der apsfilter" lprsetup auf der Textkonsole. ­ Es erscheint ein Begrüßungsbild- schirm, der die schon genannten Vorgänge beim Neu-Anlegen von aps- filter-Druckern beschreibt. Mit geht es weiter zum Hauptmenü: EXIT Exit apsfilter setup LISTING List all apsfilter entries ENTRY Add/Overwrite/Delete an apsfilter entry DELETE Fast delete an apsfilter entry Die Wahl zwischen den Antwortfeldern `OK' und `Cancel' erfolgt in allen Menüs mit Tab ;durch Auswahllisten bewegen Sie sich mit und . `EXIT' ­ lprsetup beenden. `LISTING' ­ Alle bereits bestehenden Warteschlangen auflisten. `ENTRY' ­ Zum Hinzufügen eines neuen Druckers dient der Menü- punkt `ENTRY'. Er führt zu einem weiteren Menü `Choose your printer definition', in dem Sie Ihren Drucker definieren. `DELETE' ­ Zum Löschen eines vorhandenen apsfilter-Druckers wäh- len Sie `DELETE' und erhalten dann eine Liste aller vorhandenen apsfilter-Drucker zur Auswahl. 2. Wählen Sie also `ENTRY'. Für einen lokalen Drucker werden Sie hier nach den gleichen Einzelheiten gefragt wie bei der Konfiguration mit YaST. Zunächst wird nach dem `DEVICE' (Schnittstelle) gefragt; für einen lokalen Drucker an der parallelen Schnittstelle antworten Sie beim Kernel 2.2.xx hier mit /dev/lp0. 3. Jetzt ist folgendes sichtbar: RETURN Back to previous menu DEVICE Change printer interface PRINTER Which printer driver PAPER Which paper type COLOR Monochrome/colorfull SPECIAL Settings for your printer RESET Reset the printer definition ADD Add the printer definition OVERWRITE Overwrite the printer definition DELETE Delete the printer definition `DEVICE' ­ Das hatten wir bereits ausgewählt. `PRINTER' ­ Kümmern wir uns also nun um den `PRINTER' (Dru- cker). Hier wird die passende Ghostscript-Gerätebezeichnung ( Trei- ber") herausgesucht. Dies geschieht in zwei Schritten: (a) Zunächst wählen Sie Ihren Druckertyp aus unter den Möglichkeiten: * `PostScript' * `HEWLETT-PACKARD' (HP Deskjets) * `OTHER' (andere, nicht PostScript-fähige Drucker) * `FREEDEF' (freie Definition) 341 12. Druckerbetrieb (b) Bei echten PostScript-Druckern müssen Sie nur noch in einem Dia- logfenster die Auflösung angeben. Bei allen anderen Druckern er- halten Sie unter dem Menüpunkt `COMMIT' die Liste der mögli- chen Ghostscript-Treiber zur Auswahl. Ziehen Sie dazu bitte Ab- schnitt 12.6 auf Seite 344 zurate. Nach Auswahl eines Ghostscript- Treibers geben Sie dann gleichfalls im erscheinenden Dialogfenster die Auflösung Ihres Druckers an. ­ Danach geht's mit `RETURN' wieder zum übergeordneten Menü. `PAPER' ­ Das Papierformat. `COLOR' ­ Farbig oder schwarzweiß. `SPECIAL' ­ Diese Angaben sind in der Regel nicht notwendig. 4. Sie sind wieder im Menü `Choose your printer definition' gelandet. Bei Fehlern in der Definition können Sie die einzelnen Unter- menüs erneut anwählen und korrigieren. 5. Wichtig: Mit `ADD' wird der neue Drucker schließlich eingerichtet. Schauen Sie ­ z. B. mit less6 ­ in der Datei /etc/printcap nach den Namen Ihrer neuen Druckwarteschlangen. Jede apsfilter-Druckwarte- schlange hat mehrere Namen: ausführliche, die die Daten ihrer Definition erkennen lassen, und kurze zur Bequemlichkeit (vgl. Datei 12.3.2 auf Sei- te 338). Zudem sind lp, lp-mono, ascii, raw die Warteschlangen des ersten lokalen Druckers. Die Konfigurationsdateien apsfilterrc Die Dateien /etc/apsfilterrc* bieten die Möglichkeit, Einzelheiten der Arbeit des apsfilter-Shellskripten mit Hilfe einiger Shell-Variablen noch genauer zu steuern. Standardmäßig werden bei der Installation mit eingerich- tet: * eine globale /etc/apsfilterrc, * druckerspezifische /etc/apsfilterrc. jeweils für die Warteschlangen mit dem Ghostscript-Druckertreiber (z. B. für den Canon BubbleJet 800: /etc/apsfilterrc.bjc800). Die vorinstallierten Versionen dieser Dateien enthalten für alle vor- gesehenen Variablen auskommentierte Mustereinträge. In der globalen /etc/apsfilterrc ist zudem die Bedeutung jeder Variablen in aus- führlichen Kommentaren erläutert; zum Nachlesen empfohlen ;-) Die Variablen selbst sind in den druckerspezifischen Dateien dieselben wie in der globalen /etc/apsfilterrc, und zur Erleichterung einheitlich durchnumeriert. apsfilter liest für jeden Druckjob zuerst die globale, dann die druckerspezifische apsfilterrc ein: daher überwiegen im Zweifel die Einstellungen in der letzteren. So können Sie in der /etc/apsfilterrc Normaleinstellungen vorsehen (z. B. für die Druckerauflösung) und dennoch 6 Der Umgang mit less ist im Abschnitt 19.7.3 auf Seite 482 beschrieben. 342 12.4. Netzwerkdrucker mit apsfilter für einzelne Drucker solche Normaleinstellungen durch andere, besonders an- gepasste Werte ersetzen. Änderungen in den apsfilterrc Dateien werden sofort wirksam. Wir verzichten hier auf die Wiedergabe der ganzen /etc/apsfilterrc und begnügen uns mit einigen häufiger verwendeten Variablen: * FEATURE und USE_RECODE_NOT_A2PS regeln die Filterung von AS- CII-Dateien (schon beschrieben auf Seite 336). * REMOTE_PRINTER wird gebraucht für die Vor-Filterung von Jobs für Netzwerkdrucker. Wird sie auf true gesetzt, so werden die Jobs der betreffenden Warteschlangen nach der Filterung in die spezielle War- teschlange remote weitergeleitet; wählen Sie einen anderen Wert, so wird dieser als Name des entfernten Druckers interpretiert. Siehe Ab- schnitt 12.4 auf der nächsten Seite. * PRINT_RAW_SETUP_PRINTER ist gedacht zur Aufnahme einer evtl. nötigen Escape-Sequenz zur Druckerinitialisierung für Jobs in der raw Warteschlange. Ihr Inhalt wird jeweils vor einem raw Druckjob auf den Drucker gegeben. Ein Beispiel und Angaben zur Syntax sind in der /etc/apsfilterrc enthalten. * GS_RESOL ermöglicht die Einstellung einer anderen Auflösung für den Ghostscript-Filter als ursprünglich für den Drucker konfiguriert wurde. * DO_ACCOUNTING ist auf yes zu setzen, wenn eine Accounting-Datei angelegt werden soll. Gleichzeitig muss in der /etc/printcap an- stelle von :la: der Eintrag :la@: vorgenommen werden; dann wird die bei af angegebene Datei (engl. accounting file) versorgt. Um dies Feature verwenden zu können, sollten Sie den plp einsetzen; tauschen Sie das Paket lrpold gegen das Paket plpn aus. Benutzerspezifische Einstellungen: Die Version von apsfilter in SuSE Li- nux unterstützt auch eine benutzereigene ~/.apsfilterrc im Ho- me-Verzeichnis. Sie wird jeweils nach den systemweiten apsfilterrc Dateien ausgewertet und kann daher deren Einstellungen überschreiben. Aus Sicherheitsgründen ­ die Auswertung erfolgt mit den Rechten des laufenden Druckerdaemons! ­ werden jedoch von den Anweisungen in ~/.apsfilterrc nur diejenigen berücksichtigt, die eine der folgen- den Variablen auf einen neuen Wert setzen: TEXINPUTS, PRINT_DVI, GS_FEATURES, USE_RECODE_NOT_A2PS, FEATURE, A2PS_OPTS, DVIPS_MODE, GS_RESOL7. Alle anderen Anweisungen darin werden ignoriert. Wenn Sie eine HOME/.apsfilterrc brauchen, kopieren Sie daher am besten eine der systemweiten apsfilterrc-Dateien dorthin und editieren Sie die kopierte Datei nach Bedarf. 12.4 Netzwerkdrucker mit apsfilter Ein Netzwerkdrucker mit eigener TCP/IP-Netzwerkschnittstelle wird vom BSD-Spooling-System gesehen wie ein entfernter Host mit eigenen Druck- 7 Siehe die Variable allowed in /var/lib/apsfilter/apsfilter. 343 12. Druckerbetrieb warteschlangen (Namen: siehe Druckerhandbuch, oft LPT1 usw.). Als sol- cher kann er ohne weiteres über eine entfernte Druckwarteschlange, etwa mit dem Namen remote, vom lokalen Rechner aus angesprochen werden. Sollten Sie allerdings eine Filterung der Druckjobs benötigen, wird die Sache dadurch verkompliziert, dass der Druckerdaemon lpd (Paket lprold) bei entfernten Druckwarteschlangen grundsätzlich keine Vorfilterung durchführt und auch Filterangaben in der /etc/printcap ignoriert. Daher müssen Jobs für diese Warteschlange remote bereits druckerspezifische Daten ent- halten; dies lässt sich mit einer Vorfilterung über das bypass"-Feature der SuSE-Version des apsfilter erreichen. Wenn Sie mit YaST konfigurieren, ist ein wenig Handarbeit vonnöten; wer es bequem haben will, ziehe das Programm lprsetup vor. Starten Sie also lprsetup wie oben Abschnitt 12.3 auf Seite 337 ff. gesagt; es wird dann nach dem `DEVICE' gefragt (vgl. auf Seite 339): PARALLEL Parallel printer interface SERIAL Serial printer interface PREFILTER to an other queue (bypass) REMOTE printer forwarding queue 1. Richten Sie als erstes mit `REMOTE' eine Warteschlange ein, die auf den entfernten Netzwerkdrucker verweist: Sie werden gefragt nach dem entfernten Host (engl. remote host), an den der Drucker angeschlossen ist (hier im Beispiel: sonne), und nach der Ziel-Druckwarteschlange dort (engl. remote printer) (in der Regel: lp ­ aber konsultieren Sie im Zweifelsfall Ihren Netzwerk-Administrator!). Damit ist die Definition der entfernten Druckwarteschlange schon abgeschlossen; vergessen Sie nicht, diese Warteschlange mit `ADD' tatsächlich einzurichten ... Der Eintrag in der /etc/printcap sieht zu diesem Zeitpunkt wie in Datei 12.4.1 aus. remote|lp1|sonne -lp|sonne lp:\ :lp=:\ :rm=sonne:\ :rp=lp:\ :sd=/var/spool/lpd/sonne -lp:\ :lf=/var/spool/lpd/sonne -lp/log:\ :af=/var/spool/lpd/sonne -lp/acct:\ :ar:bk:mx#0:\ :sh: Datei 12.4.1: /etc/printcap: Netzwerkdrucker 2. Nun kommt die lokale Vorfilterung" dran. Diesmal wählen Sie bei der Frage nach `DEVICE' den Punkt `PREFILTER' (engl. to an other queue (bypass)) aus. lprsetup ist nun intelligent genug, den zuvor eingerichteten Netzwerkdrucker anzubieten: remote remote=sonne queue=lp Den Rest erledigen Sie so, als wollten Sie einen regulären lokalen Drucker einrichten; vgl. oben auf Seite 339 ff. Wenn Sie schlussendlich `ADD' 344 12.5. Etwas über Ghostscript gesagt haben, finden Sie zusätzlich zu /etc/apsfilterrc (vgl. Da- tei 12.3.2 auf Seite 338) eine Datei namens /etc/apsfilterrc. (hier im Beispiel in /etc/apsfilterrc.bjc800) mit dem Eintrag: REMOTE_PRINTER="remote" Dieser Eintrag verweist auf den Netzwerkdrucker; bei weiteren Netz- werkdruckern werden anstelle von "remote" die Namen der Drucker im Netz verwendet8. Vgl. die graphische Darstellung einer solchen Konfiguration in Abbil- dung 12.1 auf der nächsten Seite. lpr -Praw lpd apsfilter lpd /dev/lpX lpr (auto) # lpr -Pascii bypass lpr -Psonne lpd ethernet lpd auf sonne /dev/lpX Filter für lp Abbildung 12.1: Netzwerkdrucker via Bypass 12.5 Etwas über Ghostscript Wenn Sie nicht gerade glücklicher Besitzer eines PostScript-Druckers sind, ist Ghostscript die populärste Wahl für den eigentlichen Druckerfilter. Ghost- script akzeptiert PostScript-Dateien als Eingabe und beinhaltet zur Konver- tierung in druckerspezifische Formate eine Vielzahl von Druckertreibern. Ghostscript ­ beschrieben in der Manual-Page von gs (man gs) ­ ist ein sehr umfangreiches Programm mit zahlreichen Kommandozeilenoptionen. Ein Direktaufruf von Ghostscript startet nach Abarbeitung der Kommando- zeile einen Dialog mit eigener Eingabeaufforderung GS>, der mit dem Befehl 8 Wenn Sie mit YaST konfigurieren, müssen Sie diesen Eintrag von Hand freischalten" und darauf achten, dass Sie als Device /dev/null angeben. 345 12. Druckerbetrieb quit beendet wird. Für eine nähere Behandlung der vielen Möglichkeiten fehlt hier der Platz. Zum Glück nimmt Ihnen ja der apsfilter die Konstruktion der doch recht komplizierten Kommandozeile ab. Hingewiesen sei aber auf den wirklich nützlichen Hilfe-Befehl tux@erde: > gs -h | less der die nötigsten Optionen auflistet sowie ­ wichtig! ­ Versionsnummer und die aktuelle Liste der unterstützten Geräte ausgibt. Der Stand dieser Liste z. Z. der Drucklegung dieses Buches ist im Abschnitt 12.6 auf der nächsten Seite abgedruckt. Bei Schwierigkeiten mit dem Drucker besteht ein nützlicher Test darin, Ghostscript mit einer PostScript-Datei (.ps) direkt aufzurufen und die er- zeugten druckerspezifischen Daten unmittelbar zum Gerät zu senden. Eine Anzahl geeigneter PostScript-Dateien finden sich z. B. unter /usr/share/ghostscript//examples oder /var/lib/apsfilter/test. Der Ghostscript-Aufruf z. B. für den eingebauten Druckertreiber necp6 mit 360 × 360 Auflösung und das anschließende Ausdrucken auf dem Drucker an /dev/lp0 sieht dann so aus: tux@erde: > gs -q -dNOPAUSE -dSAFER -sDEVICE=necp6 \ -r360x360 -sOutputFile=testdatei.lpr Testda- tei.ps quit.ps tux@erde: > su erde: # cat testdatei.lpr > /dev/lp0 Wenn Sie den uniprint-Treiber mit einer Parameter-Datei verwenden, lau- ten die Aufrufe (für einen Stylus-Drucker): tux@erde: > gs @stc.upp -q -dNOPAUSE -dSAFER \ -r360x360 -sOutputFile=testdatei.lpr Testda- tei.ps quit.ps tux@erde: > su erde: # cat testdatei.lpr > /dev/lp0 Tipps: In /usr/share/ghostscript//doc findet sich viel hilfreiche Dokumentation, z. B. in devices.txt spezifische Hinweise zu einer Reihe von neueren Druckern. Auf der Ghostscript-Homepage, können Sie sich über den neuesten Stand der Dinge bei Ghostscript (Versionen, Druckerunterstützung usw.) ins Bild setzen. Sie ist zu finden unter der URL http://www.cs.wisc.edu/ ~ghost/. 12.6 Liste der unterstützten Drucker Neben PostScript-, HP DeskJet- und Epson Stylus-Druckern werden noch ei- ne Reihe weiterer Drucker von Ghostscript unterstützt (Stand: Version 5.10); neu ist seit Version 5 der uniprint"-Treiber, der jeweils mit einer drucker- spezifischen Parameter-Datei auf den gewünschten Drucker abzustimmen ist. Diese Parameter-Dateien können ebenfalls mit lprsetup angewählt und bei Bedarf den eigenen Vorlieben angepasst werden; sie liegen unter /usr/share/ghostscript// und haben die Endung .upp. Also, zunächst sind es diese Parameter-Dateien (Tabelle 12.1 auf 346 12.6. Liste der unterstützten Drucker Seite 346), die zu bevorzugen sind, sofern sie für das Druckermodell bereits zur Verfügung stehen. Canon bjc610a0.upp BJC 610, 360x360DPI, plain paper high speed, co- lor, rendered bjc610a1.upp BJC 610, 360x360DPI, plain paper, color, rendered bjc610a2.upp BJC 610, 360x360DPI, coated paper, color, rende- red bjc610a3.upp BJC 610, 360x360DPI, transparency film, color, rendered bjc610a4.upp BJC 610, 360x360DPI, back print film, color, ren- dered bjc610a5.upp BJC 610, 360x360DPI, fabric sheet, color, rendered bjc610a6.upp BJC 610, 360x360DPI, glossy paper, color, rende- red bjc610a7.upp BJC 610, 360x360DPI, high gloss film, color, ren- dered bjc610a8.upp BJC 610, 360x360DPI, high resolution paper, color, rendered bjc610b1.upp BJC 610, 720x720DPI, plain paper, color, rendered bjc610b2.upp BJC 610, 720x720DPI, coated paper, color, rende- red bjc610b3.upp BJC 610, 720x720DPI, transparency film, color, rendered bjc610b4.upp BJC 610, 720x720DPI, back print film, color, ren- dered bjc610b6.upp BJC 610, 720x720DPI, glossy paper, color, rende- red bjc610b7.upp BJC 610, 720x720DPI, high gloss paper, color, ren- dered bjc610b8.upp BJC 610, 720x720DPI, high resolution paper, color, rendered Hewlett-Packard cdj550.upp DeskJet 550c, 300x300DpI, Gamma=2 NEC necp2x.upp Prinwriter 2X, 360x360DPI, Plain Paper necp2x6.upp Prinwriter 2X, 360x360DPI, Plain Paper Epson Tabelle 12.1: Fortsetzung auf der nächsten Seite... 347 12. Druckerbetrieb stc.upp Stylus Color I (and PRO Series), 360x360DPI, Plain Paper stc_h.upp Stylus Color I (and PRO Series), 720x720DPI, Spe- cial Paper stc_l.upp Stylus Color I (and PRO Series), 360x360DPI, no- Weave stc1520h.upp Stylus Color 1520, 1440x720DPI, Inkjet Paper stc2.upp Stylus Color II / IIs, 360x360DPI, Plain Paper stc2_h.upp Stylus Color II, 720x720DPI, Special Paper stc2s_h.upp Stylus Color IIs, 720x720DPI, Special Paper stc500p.upp Stylus Color 500, 360x360DPI, not Weaved, Plain Paper stc500ph.upp Stylus Color 500, 720x720DPI, not Weaved, Plain Paper stc600ih.upp Stylus Color 600, 1440x720DPI, Inkjet Paper stc600p.upp Stylus Color 600, 720x720DPI, Plain Paper stc600pl.upp Stylus Color 600, 360x360DPI, Plain Paper stc800ih.upp Stylus Color 800, 1440x720DPI, Inkjet Paper stc800p.upp Stylus Color 800, 720x720DPI, Plain Paper stc800pl.upp Stylus Color 800, 360x360DPI, Plain Paper stcany.upp Any Stylus Color, 360x360DPI Tabelle 12.1: Parameter-Dateien des uniprint-Treibers (Ghost- script 5.10) Falls Sie keine Parameter-Datei für Ihr Modell gefunden haben, weichen Sie auf die bewährten Treiber" der Tabelle 12.2 auf Seite 348 aus. Apple appledmp Apple Dot Matrix Printer (auch Imagewriter) iwhi Apple Imagewriter, hohe Auflösung iwlo Apple Imagewriter, niedrige Auflösung iwlq Apple Imagewriter, 320x216 dpi Canon bj10e BubbleJet 10e bj200 BubbleJet 200 bjc600 BubbleJet 600c, 4000c (Farbe) bjc800 BubbleJet 800c (Farbe) Tabelle 12.2: Fortsetzung auf der nächsten Seite... 348 12.6. Liste der unterstützten Drucker lbp8 LBP-8II lips3 LIPS III DEC declj250 LJ 250 la50 LA50 la70 LA70 la75 LA75 la75plus LA75 Plus lj250 LJ250 ln03 LN03 Epson ap3250 AP3250 eps9high FX-80-kompatibler, 240 dpi eps9mid FX-80-kompatibler, 120 dpi epson FX-80-kompatibler 9- oder 24-Nadeldrucker epsonc LQ-2550, Fujitsu 1200/2400/3400, Farbe lp8000 LP-8000 Laserdrucker lq850 LQ-850, 24-Nadeldrucker, 360dpi st800 Stylus 800, ESC/P2 stcolor Stylus Color Hewlett-Packard cdeskjet DeskJet 500C, Schwarzdruck cdj500 DeskJet 500C, 540C cdj550 DeskJet 550C, 560C cdj670 DeskJet 670C, 690C cdj850 DeskJet 850C, 855C, 870C, 1100C cdj890 DeskJet 890C cdj1600 DeskJet 1600C cdjcolor DeskJet 500C, Farbdruck cdjmono DeskJet 500C, Schwarzdruck deskjet DeskJet, DeskJet Plus djet500 DeskJet 500 djet500c DeskJet 500c djet820c DeskJet 820Cse und 820Cxi; event. auch die 1000er Modelle dnj650c DesignJet 650C hpdj DeskJet mit PCL-3 Support (Farbe und Schwarz- druck) Ghostscript-Doku: hpdj/gs-hpdj.txt Tabelle 12.2: Fortsetzung auf der nächsten Seite... 349 12. Druckerbetrieb laserjet LaserJet ljet2p LaserJet IIp ljet3 LaserJet III ljet3d LaserJet IIID ljet4 LaserJet IV ljetplus LaserJet Plus lj4dith LaserJet IV, gedithert lj5mono LaserJet 5 & 6 (PCL XL), Bitmap lj5gray LaserJet 5 & 6, Graustufen-Bitmap lp2563 2563B LinePrinter paintjet PaintJet Farbdrucker pj PaintJet XL, Alternative pjetxl PaintJet 300XL pjxl PaintJet 300XL pjxl300 PaintJet 300XL, DeskJet 1200C IBM ibmpro Proprinter, 9-Nadeln jetp3852 Jetprinter 3852 OKI oki182 MicroLine 182 okiibm MicroLine, IBM-kompatibel Tektronix t4693d2 4693d, Farbdruck t4693d4 4693d, Farbdruck t4693d8 4693d, Farbdruck tek4696 4695/4696 Andere hl7x0 Brother 720, 730, 820 imagen Imagen ImPress m8510 C.Itoh M8510 necp6 NEC P6, P6+, P60 bei 360 dpi oce9050 OCE 9050 r4081 Ricoh 4081 Laserdrucker sj48 StarJet 48 cp50 Mitsubishi CP50 Farbdrucker xes Xerox XES (2700, 3700, 4045) Tabelle 12.2: Unterstützte Drucker (Ghostscript 5.10) 350 12.7. Drucker-Checkliste: apsfilter Selbstverständlich werden alle zu HP4 LaserJet kompatiblen und weitere PostScript-Drucker direkt unterstützt. Bei der Installation von apsfilter oder der Konfiguration mit YaST ist die in der linken Spalte aufgeführte Druckerbezeichnung anzugeben (z. B. djet500). Sollte der eingesetzte Drucker nicht unterstützt werden, so heißt dies noch nicht, dass der APS-Filter nicht eingesetzt werden kann. In diesem Fall ist ein möglichst ähnlicher Drucker anzuwählen: oft ist der Treiber für ein mög- lichst junges Vorgängermodell geeignet. Hilfe bei der Treiberauswahl können Sie zudem in der CDB (engl. Component Database), der SuSE-Hardware- Datenbank, bekommen: http://cdb.suse.de/ Am Markt befinden sich zahlreiche Drucker, die mit der Beschriftung for Windows" an den Mann gebracht werden; eine andere häufige Bezeich- nung ist der Name GDI-Drucker". Derartige Drucker lassen sich oftmals gar nicht und im Glücksfall nur eingeschränkt unter Linux benutzen; ma- chen Sie sich bitte in der CDB unter http://cdb.suse.de/ kundig oder fragen Sie Ihren Händler! Speziell für derartige HP DeskJets steht ein Software-Konverter für Schwarz-Weiß-Druck zur Verfügung (Paket ppa, Serie ap); zur Instal- lation lesen Sie bitte die Dokumentation unter usr/doc/packages/ ppa bzw. in der SDB den Artikel http://sdb.suse.de/sdb/ de/html/ke_printer-gdi.html. Für Lexmark-Drucker (Modelle 5700, 7000 und 7200) ist das Paket pbm2l7k, Serie ap gedacht; die Do- kumentation liegt unter /usr/doc/packages/pbm2l7k. Ein häufiger Fehler ist eine inkompatible Auflösung. Ist dies der Fall, so kann die korrekte Auflösung (also die DPI-Rate, die der Drucker beherrscht) in die Variable GS_RESOL in /etc/apsfilterrc eingegeben werden (z. B. GS_RESOL=360x360. Einige solche Einträge ­ auskommentiert ­ sind dort bereits enthalten). 12.7 Drucker-Checkliste: apsfilter * Ist das Paket aps, Serie ap für den apsfilter installiert? * Wurde apsfilter mit YaST oder /var/lib/apsfilter/SETUP (lprsetup) konfiguriert? * Sind Paket net_tool, Paket netcfg, Paket nkita, Paket nkitb (al- le Serie a) installiert? Ist Paket lprold aus der Serie n installiert? * Hat der Kernel Unterstützung für TCP/IP? Erkenntlich an der Meldung "IP Protocols: ICMP, UDP, TCP" in /var/log/boot. msg. * Ist die Unterstützung für parallele Schnittstellen aktiv? ­ ­ Ist das lp-Modul tatsächlich geladen? Beim Kernel 2.2.xx müssen auch die Module parport und parport_pc geladen sein (vgl. Ab- schnitt 10.4.3 auf Seite 302 ff.). 351 12. Druckerbetrieb ­ Eventuell haben Sie ein Plug-and-Play"-BIOS und Sie haben die Schnittstellen-Konfiguration dort im BIOS des Rechners auf auto ste- hen; weisen Sie der Schnittstelle bitte explizit eine Adresse zu (Stan- dard ist: 0x0378 bzw. nur 378). ­ Sollte der Drucker nur blinken", dann ist die Schnittstelle im BIOS eventuell auf ECP+EPP konfiguriert, womit der Drucker aber nichts anfangen kann. Stellen Sie in einem solchen Fall zunächst einmal auf normal oder SPP oder ECP um. * Falls der Drucker die Standardauflösung 300 × 300 dpi nicht unterstützt: Wurde die richtige Druckerauflösung lt. Druckerhandbuch mit YaST oder in der /etc/apsfilterrc eingestellt? * Was sagt lpc status? * Versuchen Sie einmal lpc up all. * Zumindest die raw-Warteschlange sollte bei jedem Drucker funktionie- ren und wenigstens die Ausgabe von ASCII-Dateien gestatten; Ausnahme sind GDI-Drucker" (vgl. oben auf der vorherigen Seite). * Sollte der Drucker quer (engl. landscape) drucken und Sie das nicht wün- schen, dann schauen Sie bitte auf Seite 336 nach. * Wenn Sie beim lpr-Aufruf die Option -P verwenden, darf kein Leerzei- chen vor dem Druckernamen stehen. * Wenn Sie über die raw"-Warteschlange (-Praw) ASCII-Text ausgeben können, versuchen Sie nun, eine reguläre PostScript-Datei mit lpr aus- zudrucken. Entweder generieren Sie sich eine solche PostScript-Datei und drucken dann diese: tux@erde: > a2ps -nP -1 -p /etc/hosts > /var/tmp/hosts.ps tux@erde: > lpr /var/tmp/hosts.ps oder Sie verwenden eine mit Ghostscript mitgelieferte Datei: tux@erde: > lpr /usr/share/ghostscript/5.10/examples/tiger.ps * Kontrollieren Sie die log-Dateien unter /var/spool/lpd/TREIBER_ NAME; TREIBER_NAME müssen Sie selbstverständlich durch den von Ihnen gewählten Treiber erstetzen. * Arbeiten Sie mit der richtigen Druckerschnittstelle (vgl. Abschnitt 12.1 auf Seite 329)? * Der Kernel darf keinen PLIP-Treiber enthalten (/var/log/boot. msg)! 352