  Linux Drucker HOWTO
  Grant Taylor (gtaylor@picante.com) und Jens Vonderheide
  (Jens_Vonderheide@wharfrat.fido.de)
  v3.10, 10. September 1996, bersetzung 25. September 1996

  Dies ist die Linux Drucker HOWTO, eine bersetzung der Linux Printing-
  HOWTO. Es ist eine Zusammenfassung von Informationen, wie man unter
  Linux (und anderen UNIX-Derivaten) Dokumente generiert, ansieht,
  druckt oder faxt.
  
  1.  Einleitung

  Da dies eine bersetzung ist, werden die Versionsnummern beibehalten,
  d.h. die deutsche bersetzung beginnt mit Version 3.9.

  Diese HOWTO ist komplett neu geschrieben worden, deshalb sind viele
  Informationen aus frheren Versionen verloren gegangen. Das ist
  Absicht, da die frheren HOWTOs 60 Seiten und mehr umfaten, und den
  Erzhlflu einer toten Schildkrte hatten. Wer hier keine passende
  Antwort finden, sollte a) die vorhergehende Version auf der Printing
  HOWTO Home Page (http://www.picante.com/~gtaylor/pht/) durchsuchen und
  b) dem Autor einen Nachricht hinterlassen, was in der HOWTO noch
  stehen sollte.

  Die alten Versionen stehen nur in englischer Sprache zur Verfgung.

  Die Printing HOWTO Home Page ist eine gute Stelle, um die aktuelle
  (englische) Version dieser HOWTO zu bekommen, sie ist auch bei
  sunsite.unc.edu erhltlich.

  Die deutsche Version ist auf ftp.heise.de:/pub und auf ftp.uni-
  stuttgart.de:/pub/systems/linux/local/doc zu bekommen.  Hier werden
  auch weitere deutsche bersetzungen zu haben sein.  Fr die
  Koordination des deutschen HOWTO-Projekts ist Marco Budde (Budde@tu-
  harburg.d400.de) verantwortlich.

  Um die Verstndlichkeit zu erhalten, habe ich einige Fachbegriffe, die
  im Englischen selbst-erklrend sind, unbersetzt gelassen:

     Spool
        Warteschlange. Hier "warten" Druckauftrge, bis der Drucker
        bereit ist.

     Device
        Wrtlich Gert. Kann sich auf ein physikalisches Gert wie den
        Drucker beziehen, bezeichnet aber meistens ein logisches Gert
        fr Linux, z.B. lp1.

     Man-page
        Anleitungsseite. Beschreibt einen Befehl o.. Wird durch man
        "Befehl" angezeigt.

  1.1.  Geschichte

  Dies ist die dritte Generation, d.h. die dritte komplette Neufassung
  der Printing-HOWTO. Die Geschichte der PHT ist diese:

  1. Der Autor schrieb die Printing-HOWTO als Antwort auf zu viele
     Fragen zum Drucken in comp.os.linux, und postete sie.  Dieses
     Posting war einige Monate vor dem HOWTO-Projekt und war damit die
     erste FAQ, die eine `HOWTO' genannt wurde. Diese Version war in
     reinem ASCII.

  2. Nachdem der Autor dem HOWTO-Projekt beitrat, wurde die Printing-
     HOWTO mit einem Lpd FAQ von Brian McCauley
     (B.A.McCauley@bham.ac.uk) verschmolzen, die beiden arbeiteten als
     Co-Autoren an der PHT etwa 2 Jahre lang weiter zusammen.  In dieser
     Zeit wurde auch die Arbeit von Karl Auer (Karl.Auer@anu.edu.au)
     eingebaut. Diese Generation der PHT war in TeXinfo, und erhltlich
     in PS, HTML, Ascii und Info.

  3. Nachdem die PHT fr ber ein Jahr vor sich hin gerottet war, und
     ein Versuch, jemand anders fr die Weiterfhrung zu gewinnen,
     scheiterte, entstand diese Neufassung. Diese Generation der PHT ist
     in Linuxdoc-SGML.

  1.2.  Geschichte der deutschen bersetzung

  Die deutsch-sprachigen Versionen sind reine bersetzung, die
  Geschichte stimmt daher weitestgehend mit der oben genannten
  Geschichte berein.  Die erste bersetzte HOWTO war die Version 3.9,
  der bersetzer bemht sich, neue englisch-sprachige Version mglichst
  schnell einzubauen.

  1.3.  Copyright

  Dieses Dokument ist urheberrechtlich geschtzt. Das Copyright fr die
  englische Printing-HOWTO, auf der dieses Dokument basiert, liegt bei
  Grant Taylor. Das Copyright fr die deutsche bersetzung liegt bei
  Jens Vonderheide. Das Dokument darf gem der GNU GPL kostenlos
  verbreitet werden. Das bedeutet, da der Text sowohl ber
  elektronische wie auch physikalische Medien ohne die Zahlung von
  Lizenzgebhren verbreitet werden darf, solange dieser Copyright
  Hinweis nicht entfernt wird. Eine kommerzielle Verbreitung ist erlaubt
  und sogar erwnscht. Bei einer Verbreitung in Papierform ist das
  deutsche HOWTO-Projekt hierber zu informieren.
  2.  Wie druckt man?

  Wenn lpd bereits so eingerichtet ist, da es druckt, oder der System-
  Betreuer es bereits eingerichtet hat, dann mu nur der Gebrauch des
  lpr-Kommandos erlernt werden. Die Printing Usage HOWTO bezieht sich
  darauf, und auf einige weitere Kommandos, die man kennen sollte.

  3.  Kernel-Drucker-Devices

  3.1.  Das lp-Device

  Das Linux-Kernel, falls das lp-Device eincompiliert oder geladen wurde
  (die Ausgabe von cat /proc/devices sollte das Device lp einschlieen),
  stellt ein oder mehr Devices /dev/lp0, /dev/lp1 und /dev/lp2 zur
  Verfgung. Diese werden NICHT dynamisch zugeordnet, sondern
  korrespondieren vielmehr mit einer bestimmten I/O-Adresse der
  Hardware. Das heit, das der erste Drucker entweder lp0 oder lp1 sein
  kann, abhngig von der verwendeten Hardware. Testen Sie beides ;)

  Man kann nicht die plip- und lp-Treiber gleichzeitig auf einem Port
  laufen lassen. Man kann aber einen der beiden Treiber entweder manuell
  oder mit kerneld (mit Version 2 oder spten 1.3.x) laden. Wenn man die
  Interrupts u.. sinnvoll setzt, kann man lp auf dem einen und plip auf
  dem anderen Port laufen lassen. Jemand hat das gemacht, indem er die
  Treiber gendert hat, es bleibt abzuwarten, ob es auch eine einfache
  Kommandozeilen-Methode gibt.

  Es gibt eine kleine Utility namens tunelp
  (http://www.picante.com/~gtaylor/pht/man/tunelp.html), mit dem man als
  root Interrupts, Geschwindigkeit und anderes am lp-Device einstellen
  kann.

  Wenn die Option in Kernel 2 oder einigen 1.3.x-Kernels compiliert
  wurde, kann eine lp=-Option gewhlt werden, um die Portadressen und
  Interrupts einzustellen:

  Wenn der lp-Treiber in der Kernel eingebaut wurde, kann ein
  LILO/LOADLIN-Kommando benutzt werden, um die Portadresse und
  Interrupts einzustellen.

       Syntax:      lp=port0[,irq0[,port1[,irq1[,port2[,irq2]]]]]

       Beispiel:    lp=0x378,0   oder   lp=0x278,5,0x378,7 **

       ** Standard Port-Einstellungen, der andere Port (<tt/lp0/) liegt bei 0x3bc.

  Hinweis: Wenn diese Funktion benutzt wird, mssen alle Ports angegeben
  werden, die bercksichtigt werden sollen, es gibt keine
  Voreinstellungen. Man kann einen eingebauten Treiber mit lp=0
  deaktivieren.

  Wenn das Device als Modul geladen wird (nur in 2.0 und spten 1.3.x
  Kernels), knnen die Adressen und Interrupts in der blichen Syntax im
  insmod-Kommando angegeben werden. Die Parameter sind io=x,y,z und
  irq=x,y,z, wobei x, y und z genau das sind, was man annimmt. Auf der
  Man-page zu insmod gibt es weitere Informationen.

  3.2.  Serielle Devices

  Serielle Devices werden blicherweise unter Linux als etwas wie
  /dev/ttyS1 bezeichnet. Das Programm stty
  (http://www.picante.com/~gtaylor/pht/man/stty.html) erlaubt es,
  interaktiv die Einstellungen fr die seriellen Schnittstellen
  anzusehen oder zu verndern; mit setserial
  (http://www.picante.com/~gtaylor/pht/man/setserial.html) knnen einige
  erweiterte Attribute eingestellt werden und IRQs und I/O-Adressen fr
  nicht-standardmige Schnittstellen eingestellt werden.  Weitere
  Informationen ber serielle Schnittstellen knnen in der Serial-HOWTO
  (http://sunsite.unc.edu/mdw/HOWTO/Serial-HOWTO.html) nachgelesen
  werden.

  Wenn man einen langsamen seriellen Drucker mit Flukontrolle benutzt,
  kann es sein, da einige Druckauftrge abgeschnitten werden. Das kann
  an den seriellen Schnittstellen liegen, die standardmig 30 Sekunden,
  nachdem das Schnittstellendevice geschlossen wurde, alle nicht
  gesendeten Zeichen lscht.  Der Puffer hlt bis zu 4096 Zeichen, wenn
  der Drucker Flukontrolle verwendet und nicht schnell genug ist, um
  innerhalb von 30 Sekunden, nachdem die Software die Schnittstelle
  geschlossen hat, alle Daten aus dem Puffer zu empfangen, ist das Ende
  des Pufferinhalts verloren.  Wenn der Befehl cat file > /dev/ttyS2
  kurze Dateien komplett ausdruckt, bei lngeren aber das Ende
  abschneidet, knnte genau dieser Fall vorliegen.

  Die 30 Sekunden-Wartezeit kann durch das "closing_wait"-Element der
  Datenstruktur der seriellen Schnittstelle mit Hilfe eines ioctl()-
  Aufrufs eingestellt werden. Setserial kann dieses Element nicht
  einstellen, aber andere in der selben Datenstruktur, so da es einfach
  ist, setserial entsprechend anzupassen. Dann kann in rc.serial der
  setserial-Befehl so gendert werden, da closing_wait verlngert wird.

  4.  Welche Spool-Software?

  Bis vor kurzem war die Wahl fr Linuxanwender einfach - jeder
  verwendete das selbe alte lpd, das fast wrtlich aus der
  Net-2-Distribution von BSD genommen wurde. Auch heute liefern die
  meisten Distributoren noch diese Software. Aber das beginnt sich zu
  verndern. SVR4-hnliche Systeme wie Sun Solaris kommen mit einem
  komplett anderen Spool-Paket, das auf lpsched beruht. Und es gibt
  Anzeichen, da einige Linux-Distributoren auf LPRng umsteigen werden,
  eine wesentlich neuere Implementierung, die frei erhltlich ist. LPRng
  ist fr groe Installationen wesentlich  einfacher zu verwalten und
  besitzt einen nicht so erschreckenden Code wie lpd.

  Im Moment ist lpd wohl fr die meisten Linuxanwender die beste Lsung,
  auch mit den neuen Mglichkeiten verglichen. Obwohl es nicht das
  schickste System ist, funktioniert es gut, sobald es einmal
  eingerichtet ist, und ist gut verstanden und in vielen Unix-Bchern
  dokumentiert.

  Weitere Informationen ber LPRng sind auf der Seite LPRng - Ein
  verbesserter Druckspooler
  (http://ltpwww.gsfc.nasa.gov:81/about/unix/Depotdoc/LDRng/) zu finden.
  Zuknftige Versionen dieser HOWTO werden sowohl ber lpd als auch ber
  LPRng Informationen enthalten.

  5.  Grundlagen

  Damit das Drucken gut funktioniert, ist es wichtig, die Funktionsweise
  des lpd-Systems zu verstehen.

  Lpd steht fr Line Printer Daemon und bezieht sich je nach
  Zusammenhang entweder auf den Daemon oder auf die gesamten Programme,
  die fr das Druck-Spooling zustndig sind. Das sind:

       lpd
        Der Spooling-Daemon. Einer von diesen kontrolliert alles auf
        einer Maschine, UND einer luft pro Drucker solange der Drucker
        druckt.

       lpr
        Der Spooling-Befehl fr den Anwender. Lpr ruft lpd auf und setzt
        einen neuen Druckauftrag (Job) in den Spool.

       lpq
        Listet die Jobs in einer Drucker-Warteschlange auf.

       lpc
        Der Lpd Systemkontrollbefehl. Mit lpc knnen die Warteschlangen
        gestoppt, gestartet, umsortiert, etc. werden.

       lprm
        lprm entfernt einen Auftrag aus der Warteschlange.

  Und wie pat das alles zusammen? Nun ja, wenn der Computer bootet wird
  lpd gestartet. Es durchsucht die Datei /etc/printcap, um
  festzustellen, fr welche Drucker es die Spools verwaltet. Jedes mal,
  wenn man lpr aufruft, nimmt lpr mit lpd durch einen Socket namens
  /dev/printer Verbindung auf und bergibt lpd die zu druckende Datei
  und einige Informationen, wer druckt und wie zu drucken ist. Lpd
  druckt dann die Datei auf dem passenden Drucker aus.

  Das lp-System wurde ursprnglich entwickelt, als die meisten Drucker
  Zeilendrucker waren - das heit, die meisten Anwender benutzten reine
  Ascii-Drucker. Es hat sich herausgestellt, da nur etwas mehr Aufwand
  ntig ist, damit lpd mit heutigen Druckauftrgen zusammenarbeitet, die
  hufig in PostScript oder Text oder dvi oder ... sind.

  6.  Grundeinstellungen

  6.1.  Traditionelle lpd-Konfiguration

  Die Minimaleinstellungen fr lpd liefern ein System, das Dateien in
  Warteschlangen verwalten und sie drucken kann. Es kmmert sich nicht
  darum, ob der Drucker die Dateien berhaupt versteht und wird
  vermutlich keine ansehnlichen Ausgaben produzieren. Trotzdem ist es
  der erste Schritt zum Verstndnis, also weiterlesen!

  Um eine Warteschlange zu lpd hinzuzufgen, mu man einen Eintrag in
  /etc/printcap hinzufgen und ein neues Spool-Verzeichnis unter
  /var/spool/lpd erzeugen.

  Ein Eintrag in /etc/printcap sieht wie folgt aus:

  # LOKALER djet500
  lp|dj|deskjet:\
          :sd=/var/spool/lpd/dj:\
          :mx#0:\
          :lp=/dev/lp0:\
          :sh:

  Das definiert einen Spool namens lp, dj oder deskjet, im Verzeichnis
  /var/spool/lpd/dj, ohne maximale Auftragsgre, der an ein Device
  /dev/lp0 druckt und am Anfang des Druckauftrags keine Trennseite
  hinzufgt (mit dem Namen der Person, die gedruckt hat, etc.).

  Jetzt wre der richtige Augenblick, um die man-page fr printcap zu
  lesen.

  Das obige Beispiel sieht sehr einfach aus, hat aber ein Problem. Wenn
  man keine Files sendet, die ein DeskJet 500 verstehen kann, wird
  dieser Deskjet seltsame Sachen drucken. Wenn man z.B. eine
  gewhnlichen UNIX-Textdatei an den Deskjet schickt, interpretiert er
  die Newlines wrtlich und gibt aus:

       Dies ist Zeile eins.
                           Dies ist Zeile zwei.
                                               Dies ist Zeile drei.

  und so weiter. Der Ausdruck einer PostScript-Datei wrde eine schne
  Liste der PostScript-Befehle geben, mit diesem "Treppenstufeneffekt"
  ausgedruckt, aber keine sinnvolle Ausgabe.

  Also wird mehr bentigt, und genau das ist die Aufgabe des Filters.
  Dem aufmerksame Leser werden bei der printcap man-page die Spool-
  Attribute if und of aufgefallen sein. if oder der Inputfilter ist
  genau das, was man jetzt braucht.

  Wenn man ein kleines Shellscript namens filter schreibt, da
  Zeilenumbrche (CR) vor die Newlines setzt, wird der
  "Treppenstufeneffekt" verhindert. Also mu in den printcap-Eintrag
  eine if-Zeile eingefgt werden:

       lp|dj|deskjet:\
               :sd=/var/spool/lpd/dj:\
               :mx#0:\
               :lp=/dev/lp0:\
               :if=/var/spool/lpd/dj/filter:\
               :sh:

  Ein simples Filterscript knnte sein:

       #!perl
       while(<STDIN>){printf "$_\r";};

  Wenn man das machen wrde, htte man einen Spool, in den man
  gewhnliche UNIX-Textdateien drucken kann und sinnvolle Ergebnisse
  bekme. (Ja, es gibt vier Millionen bessere Mglichkeiten diesen
  Filter zu schreiben, aber wenige so anschauliche. Der Leser mge dies
  effizienter gestalten.)

  Das einzige verbleibende Problem besteht darin, da gewhnlicher Text
  nichts Besonderes ist - es wre sicherlich besser, wenn man PostScript
  und andere formatierte Texte oder Grafik-Ausgaben drucken knnte. Ja,
  gut, das wre es, und es ist einfach. Dazu mu einfach der obige
  Zeilenumbruch-Filter erweitert werden. Wenn man einen Filter schreibt,
  der beliebige Dateitypen akzeptiert und diese in Deskjet-verstndliche
  Ausgaben umwandelt, hat man wirklich einen cleveren Druck-Spooler!

  So ein Filter wird Magic-Filter genannt. Man sollte sich nicht die
  Mhe machen und selber einen schreiben, solange man keine wirklich
  ungewhnlichen Sachen drucken will. Es gibt einige wirklich gute im
  Netz.

  6.2.  File Permissions

  Auf Grund von hufigen Nachfragen ist hier eine Liste der Permissions
  der wichtigen Dateien, wie sie auf dem System des Autors gesetzt sind.
  Es gibt bessere Mglichkeiten, im Idealfall ohne SUID root, sondern
  mit SGID Binrdateien, aber so wurde das System installiert und es
  funktioniert. (Ehrlich gesagt, wenn ein Verkufer noch nicht einmal
  ein funktionierendes lpd liefern kann...)

       -r-sr-sr-x   1 root     lp    /usr/bin/lpr*
       -r-sr-sr-x   1 root     lp    /usr/bin/lprm*
       -rwxr--r--   1 root     root  /usr/sbin/lpd*
       -r-xr-sr-x   1 root     lp    /usr/sbin/lpc*
       drwxrwxr-x   4 root     lp    /var/spool/lpd/
       drwxr-xr-x   2 root     lp    /var/spool/lpd/lp/

  Lpd mu momentan als root aufgerufen werden, damit es die lp Service-
  Ports mit niedrigen Nummern ansprechen kann. Es sollte vielleicht UID
  lp.lp oder so etwas nach der Bindung werden, aber das tut es wohl
  nicht.

  7.  Wie man einen passenden Magic-Filter bekommt

  7.1.  APS Filter

  Einer der schnsten Magic-Filter ist APS Filter, von Andreas Klemm.
  Der Eintrag in der Linux Software Map ist in etwa dieser:

  Begin3
  Title:          apsfilter
  Version:        4.9.1
  Entered-date:   Montag, 10. Juli 1995, 21:22:35 Uhr MET DST
  Description:    magicfilter for lpd with auto filetype detection
                  (Magic-Filter fuer lpd mit automatischer Dateityp-
                  Erkennung)
  Keywords:       lpd magicfilter aps apsfilter
  Author:         andreas@knobel.GUN.de (Andreas Klemm)
  Maintained-by:  sledge@hammer.oche.de (Thomas Bueschgens)
                  andreas@knobel.GUN.de (Andreas Klemm)
  Primary-site:   sunsite.unc.edu
                  /pub/Linux/system/Printing/
                  211KB aps-491.tgz
  Original-site:  ftp-i2.informatik.rwth-aachen.de
                  /pub/Linux/pak/APSfilter/aps-491.tgz
  Platforms:      C-Compiler, gs Postscript emulator, pbmutils
  Copying-policy: GPL
  End

  APS Filter wird als ein if-Filter fr eine Warteschlange installiert
  und bersetzt viele hufige Dateitypen in die entsprechende
  Druckersprache. Es versteht z.B. Text, PostScript, dvi, gif und
  andere.

  7.2.  Magic-Filter

  Der Magic-Filter, geschrieben von B.A.McCawley, arbeitet in etwa wie
  der APS Filter. Er ist aber in bash geschrieben und knnte deshalb
  besser angepat werden. Der LSM-Eintrag:

       Version:        0.4
       Description:    Bash scripts to simplify the task of configuring
                       lpd to auto-detect file types using /etc/magic. (As
                       advertised in the printing-HOWTO). This package
                       uses existing filters so it only prints file types
                       for which one already has filters (or compressed
                       versions thereof). Alterative magic filter approches
                       are described in the printing-HOWTO.
                       (Bashscripte, um die Konfiguration von lpd zur
                       Autoerkennung von Dateitypen mit /etc/magic zu
                       erleichtern (wie in der Printing-HOWTO angekuendigt).
                       Dieses Paket verwendet existierende Filter, es druckt
                       also nur Dateitypen, fuer die bereits Filter vorhanden
                       sind (oder komprimierte Versionen). Andere Ansaetze
                       fuer Magic-Filter sind in der Printing-HOWTO
                       beschrieben.)
       Keywords:       lpd, /etc/magic, printing, filter
       Author:         B.A.McCauley@bham.ac.uk (Brian McCauley)
       Maintained-by:  B.A.McCauley@bham.ac.uk
       Primary-site:   tsx-11.mit.edu pub/linux/sources/usr.bin
                       magic-filter-0.4.tar.gz  5709
       Copying-policy: GNU GPL

  7.3.  Die anderen Magic-Filter

  Zur maximalen Verwirrung gibt es zwei weitere Magic-Filter, die
  einfach nur magic filter heien (oder sind es die gleichen?)

       Title:          magicfilter
       Version:        1.1b
       Entered-date:   04APR95
       Description:    A customizable, extensible automatic printer filter.
                       Lets you automatically detect and print just about any
                       data type you can find a conversion utility for.  This
                       filter is written in C and is controlled completely
                       from an external printer configuration file.
                       This version adds automagic creation of configuration
                       files based on the installed software on your system,
                       courtesy of GNU Autoconf.
                       This version is a bug fix from 1.1/1.1a; filters for
                       non-ASCII capable PostScript printers have been added.
                       (Ein anpassungsfaehiger, erweiterbarer automatischer
                       Druckerfilter. Erkennt und druckt automatisch so
                       ziemlich jeden Datentyp, fuer den es eine Umwandlungs-
                       routine gibt. Dieser Filter ist in C geschrieben und
                       wird komplett durch eine externe Drucker-
                       Konfigurationsdatei gesteuert. ...)
       Author:         H. Peter Anvin <Peter.Anvin@linux.org>
       Primary-site:   sunsite.unc.edu
                       53000 /pub/Linux/system/Printing/magicfilter-1.1b.tar.gz
       Copying-policy: GPL

  8.  Serielle Drucker unter lpd

  8.1.  Einstellungen der printcap

  Lpd besitzt 5 Attribute, die in der /etc/printcap eingestellt werden
  knnen, um die Einstellungen des seriellen Ports zu kontrollieren.
  Man lese dazu die printcap man page und beachte die Bedeutungen von
  br#, fc#, xc#, fs# und xs#. Die letzten vier dieser Attribute sind
  Bitmaps, die fr die Einstellungen dieses Ports stehen.  Das
  br#-Attribut ist einfach die Baudrate, z.B.  `br#9600'.

  Es ist sehr einfach, die stty-Einstellungen in printcap Flags zu
  bersetzen. Wenn ntig, mge man nun die man page fr stty betrachten.

  Man benutzt stty um den Druckerport einzustellen, so da man ein File
  an ihn `catten' kann. So kann `stty -a' aussehen:

  dina:/usr/users/andy/work/lpd/lpd# stty -a < /dev/ttyS2
  speed 9600 baud; rows 0; columns 0; line = 0;
  intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
  eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
  lnext = ^V; min = 1; time = 0;
  -parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
  -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr
  -igncr -icrnl ixon -ixoff -iuclc -ixany -imaxbel
  -opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0
  bs0 vt0 ff0
  -isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase
  -tostop -echoprt -echoctl -echoke

  Die einzigen Unterschiede zwischen diesem und der Initialisierung beim
  Booten sind -clocal, -crtscts und ixon. Die bentigten Einstellungen
  knnen auch anders sein, abhngig von der Flukontrolle des Druckers.

  Man kann stty auf eine etwas ungewhnliche Weise verwenden. Weil stty
  auf dem Terminal, das mit seinen Standardinput verbunden ist,
  arbeitet, kann man damit einen seriellen Port manipulieren, indem man
  `<' wie oben verwendet.

  Sobald die stty-Einstellungen richtig sind, wenn also `cat file >
  /dev/ttyS2' (in meinem Fall) die Datei an den Drucker schickt, sollte
  man die Datei /usr/src/linux/include/linux/termios.h betrachten. Diese
  Datei enthlt viele #defines und einige structs (man sollte diese
  Datei auf den Drucker catten (das funktioniert ja jetzt) und als
  Notizpapier verwenden). Man betrachte den Abschnitt, der mit

       /* c_cflag bit meaning */
       #define CBAUD   0000017

  anfngt. Dieses Abschnitt listet die Bedeutungen der fc#- und fs#-
  Teile auf. Es fllt auf, da die Namen (nach den Baudraten) mit einer
  der stty-Ausgabeleitungen bereinstimmen. Es wird wirklich leicht...

  Einige dieser Einstellungen fangen mit einem - in der stty-Ausgabe an.
  Wenn man alle diese Nummern aufsummiert (sie sind oktal), erhlt man
  die Bits, die man lschen will. Also ist das die fc#-Einstellung.
  Natrlich setzt man diese Bits direkt nach dem Lschen, also kann man
  einfach `fc#0177777' verwenden.

  Jetzt macht man das gleiche fr die Einstellungen, die kein - vor sich
  haben. In dem Beispiel sind die wichtigen CS8 (0000060), HUPCL
  (0002000), und CREAD (0000200). Man beachte auch die Flags fr die
  Baudrate (z.B.  0000015). Man addiert alle zusammen und bekommt im
  Beispiel 0002275 heraus. Das kommt in die fs#- Einstellung (`fs#02275'
  funktioniert gut beim Autor).

  Man macht das gleiche mit "set" und "clear" fr den nchsten Anschnitt
  der Includedatei, "c_lflag bits". Der Autor mute nichts einstellen
  und verwendet deshalb `xc#0157777' und `xs#0'.

  8.2.  ltere serielle Drucker die Zeichen verschlucken

  Jon Luckey hat festgestellt, da einige ltere serielle Drucker mit
  10-cent seriellen Interfaces und kleinen Buffern wirklich Stopp
  meinen, wenn sie das mit ihrer Flukontrolle sagen. Er fand heraus,
  da man das abstellen kann, indem man an einer 16550er seriellen
  Schnittstelle mit setserial den FIFO ausschalten (man mu scheinbar
  nur den UART-Typ als 8250 einstellen).

  9.  Distributionsabhngige Lsungen

  Dieser Abschnitt ist per Definition unvollstndig. Details zu
  spezifischen Distributionen sind willkommen.

  9.1.  RedHat 2.x und 3.0.3 (Picasso)

  RedHat hat ein GUI-Druckerverwaltungsprogramm, das Netzwerkdrucker und
  Drucker an lokalen Devices hinzufgen kann. Es erlaubt es, einen von
  PostScript untersttzten Druckertyp und eine UNIX-Device-Datei zu
  whlen und installiert dann eine Warteschlange in /etc/printcap und
  schreibt einen kleinen PostScript-und-ASCII Magic-Filter basierend auf
  gs und nenscript
  (http://www.picante.com/~gtaylor/pht/man/nenscript.html).  Diese
  Lsung funktioniert ziemlich gut und ist fr gewhnliche Anforderungen
  leicht einzustellen.

  RedHat's neuester BETA-Release (Rembrandt II) verwendet anscheinend
  LPRng. Der Autor hat sich Rembrandt noch nicht angesehen.

  9.2.  Sonstige Distributionen

  Der Autor bittet um Details, was andere Distributionen machen.

  10.  Wie man einen Drucker ber ein Netzwerk benutzt

  Eine der Fhigkeiten von lpd liegt darin, da man ber ein Netzwerk
  auf Druckern drucken kann, die physikalisch an einen anderen Rechner
  angeschlossen sind. Mit einer vorsichtigen Kombination von
  Filterscripts und anderen Utilities kann man mit lpr transparent auf
  allen mglichen Druckern ber alle mglichen Netzwerke drucken.

  10.1.  Auf einem UNIX/lpd Host

  Um es anderen Rechnern zu ermglichen, auf dem eigenen Drucker zu
  drucken, mssen diese in /etc/hosts.equiv oder /etc/hosts.ldp
  aufgelistet werden. Achtung: hosts.equiv hat viele weitere Effekte;
  man sollte sich sicher sein, was man tut, wenn man hier einen Rechner
  auflistet. Man kann auch nur bestimmten Benutzern des anderen Rechners
  erlauben, zu drucken. Dazu nutzt man das rs-Attribut; siehe dazu lpd
  man page.

  10.2.  Mit lpd

  Um auf einem anderen Rechner zu drucken, erstelle man einen
  /etc/printcap-Eintrag wie diesen:

  # NETZWERK djet500
  lp|dj|deskjet:\
          :sd=/var/spool/lpd/dj:\
          :rm=geraet.da.draussen.com:\
          :rp=printername:\
          :lp=/dev/null:\
          :sh:

  Es gibt weiterhin ein Spool-Verzeichnis auf dem lokalen Rechner, das
  von lpd verwaltet wird. Wenn der Netzwerkrechner beschftigt oder
  nicht erreichbar ist, bleiben Druckauftrge des lokalen Rechners in
  dem Spoolverzeichnis, bis sie gesendet werden knnen.

  10.3.  Mit rlpr

  Man kann auch rlpr benutzen, um einen Druckauftrag direkt in eine
  Warteschlange auf einem Netzwerkrechner zu schicken, ohne sich die
  Mhe zu machen, lpd entsprechend einzurichten. Das ist besonders
  sinnvoll, wenn man nur selten auf vielen verschiedenen Druckern
  druckt.  Aus der Ankndigung von rlpr:

  Rlpr verwendet TCP/IP, um Druckauftrge an lpd-Server in einem
  Netzwerk zu schicken.

  Anders als lpr mssen die Netzwerkdrucker dem lokalen Rechner nicht
  bekannt sein (z.B. durch /etc/printcap). Deshalb ist rlpr wesentlich
  flexibler und bentigt weniger Verwaltung.

  rlpr kann berall da verwendet werden, wo ein traditionelles lpr
  verwendet werden kann und ist rckwrts-kompatibel zum traditionellen
  BSD lpr.

  Der Hauptvorteil von lprl ist die Mglichkeit, *von berall nach
  berall* zu drucken, ohne Rcksicht darauf, wie das System, von dem
  aus man drucken will, konfiguriert ist. Es kann genau wie das
  traditionelle lpr wie ein Filter funktionieren, so da Clients, die
  auf einem Netzwerkrechner laufen (z.B. Netscape, XEmacs, etc) ohne
  grere Probleme auf dem lokalen Rechner drucken knnen.

  Rlpr ist erhltlich von sunsite.unc.edu:/pub/Linux/system/Printing/.

  10.4.  Auf einem Win95, WinNT, LanManager oder Samba-Drucker

  Es ist mglich, eine lpd-Warteschlange mit dem smbclient-Programm (ein
  Teil des Samba-Pakets) zu einem TCP/IP-basierenden SMB-Druckservice zu
  schicken. Dafr kommt mit Samba ein Script namens smbprint.  Kurz
  gesagt legt man eine Konfigurationsdatei fr den gewnschten Drucker
  im Spoolverzeichnis an und installiert das smbprint-Script als if.

  Der /etc/printcap-Eintrag sieht wie folgt aus:

  lp|remote-smbprinter:\
      :lp=/dev/null:sh:\
      :sd=/var/spool/lpd/lp:\
      :if=/usr/local/sbin/smbprint:

  Man sollte die Dokumentation im smbprint-Skript lesen, um weitere
  Informationen zu erhalten.

  Man kann auch den smbclient verwenden, um eine Datei direkt an einen
  SMB-Druckservice zu schicken ohne lpd zu benutzen.  Siehe Man-page.

  10.5.  Auf einem Netware-Drucker

  Im ncpfs-Paket ist ein Programm namens nprint, da die gleichen
  Funktionen wie smbprint fr NetWare hat. ncpfs ist erhltlich bei
  linux01.gwdg.de:/pub/ncpfs/. Aus dem LSM-Eintrag zur Version 0.16:

       With ncpfs you can mount volumes of your netware server
       under Linux. You can also print to netware print queues and
       spool netware print queues to the Linux printing system. You
       need kernel 1.2.x or 1.3.54 and above. ncpfs does NOT work
       with any 1.3.x kernel below 1.3.54.  (Mit ncpfs kann man
       Laufwerke auf dem Netzwerk-Server unter Linux mounten.  Man
       kann auch in Netware-Warteschlangen druchen und Netware-
       Warteschlangen in das Linux Drucksystem spoolen. Man
       bentigt Kernel 1.2.x oder 1.3.54 oder hoeher. ncpfs funk
       tioniert NICHT mit 1.3.x-Kernels unter 1.3.54.)

  Damit nprint ber lpd arbeitet, schreibt man ein kleines Shellscript
  um stdin auf dem Netware-Drucker zu drucken und installiert es als if
  fr eine lpd Warteschlange. Man erhlt so etwas wie:

       sub2|remote-NWprinter:\
               :lp=/dev/null:sh:\
               :sd=/var/spool/lpd/sub2:\
               :if=/var/spool/lpd/nprint-script:

  Das nprint-script knnte ungefhr so aussehen:

       #! /bin/sh
       /usr/local/bin/nprint -S net -U name -P passwd -q printq-q -

  10.6.  Auf einem EtherTalk- (Apple-) Drucker

  Im netatalk-Paket ist etwas wie nprint und smbclient enthalten.
  Werner Eugster hat die Einstellungen, um auf einem Apple-Netzwerk zu
  drucken, besser beschrieben, als es der Autor je knnte, siehe seine
  Webseite (http://garnet.berkeley.edu/~weugster/appleprint.html).

  Obskure Warnung der Woche: Netatalk funktioniert nicht mit einer SMC
  Etherpower PCI-Karte mit einem DEC Tulip-Chip.

  10.7.  Auf einem HP oder anderem Ethernet-Drucker

  HPs und einige andere Drucker haben ein Ethernet-Interface, auf dem
  man direkt mit lpd drucken kann. Man sollte den Anweisungen folgen,
  die mit dem Drucker oder Netzwerkadapter geliefert wurden, aber
  generell lassen solche Drucker lpd "laufen" und stellen eine oder
  mehrere Warteschlangen zur Verfgung. Ein HP zum Beispiel knnte mit
  einem solchem Printcap-Eintrag arbeiten:

       lj-5|remote-hplj:\
               :lp=/dev/null:sh:\
               :sd=/var/spool/lpd/lj-5:\
               :rm=printer.name.com:rp=raw:

  In einem groen Netz, besonders einem groen Netz, in dem einige
  Drucker kein PostScript untersttzen, ist ein sinnvoll, einen Print-
  Server zu nutzen, auf dem alle Rechner drucken und auf dem alle
  Ghostscript-Jobs laufen.

  10.7.1.  Auf alten HPs

  Einige Drucker untersttzen nur ein kleines "Nicht-Protokoll" mit
  reinen TCP-Verbindungen. Erwhnenswert in dieser Kategorie sind frhe
  JetDirect (und einige JetDirectEx) Karten. Grundstzlich mu man zum
  Drucken auf diesen Drucker eine TCP-Verbindung zu dem Drucker auf
  einem bestimmten Port (typischerweise 9100) ffnen und den
  Druckauftrag hierdurch schicken. Das kann in Perl implementiert
  werden:

  #!/usr/bin/perl
  # Thanks to Dan McLaughlin for writing the original version of this
  # script (And to Jim W. Jones for sitting next to Dan when writing me
  # for help ;)

  $fileName = @ARGV[0];

  open(IN,"$fileName") || die "Kann Datei $fileName nicht oeffnen";

  $dpi300     = "\x1B*t300R";
  $dosCr      = "\x1B&k3G";
  $ends = "\x0A";

  $port =  9100 unless $port;
  $them = "bach.sr.hp.com" unless $them;

  $AF_INET = 2;
  $SOCK_STREAM = 1;
  $SIG{'INT'} = 'dokill';
  $sockaddr = 'S n a4 x8';

  chop($hostname = `hostname`);
  ($name,$aliases,$proto) = getprotobyname('tcp');
  ($name,$aliases,$port) = getservbyname($port,'tcp')
      unless $port =~ /^\d+$/;;
  ($name,$aliases,$type,$len,$thisaddr) =
          gethostbyname($hostname);
  ($name,$aliases,$type,$len,$thataddr) = gethostbyname($them);
  $this = pack($sockaddr, $AF_INET, 0, $thisaddr);
  $that = pack($sockaddr, $AF_INET, $port, $thataddr);

  if (socket(S, $AF_INET, $SOCK_STREAM, $proto)) {
  #    print "socket ok\n";
  }
  else {
      die $!;
  }
  # Gibt dem Socket eine Adresse
  if (bind(S, $this)) {
  #    print "bind ok\n";
  }
  else {
      die $!;
  }

  # Ruft den Server auf.

  if (connect(S,$that)) {
  #    print "connect ok\n";
  }
  else {
      die $!;
  }

  # Setzt Befehlspuffer fuer den Socket.

  select(S); $| = 1; select(STDOUT);

  #    print S "@PJL ECHO Hi $hostname! $ends";
  #    print S "@PJL OPMSG DISPLAY=\"Job $whoami\" $ends";
  #    print S $dpi300;

  # Durch Aufteilung Deadlock verhindern.

  if($child = fork) {
      print S $dosCr;
      print S $TimesNewR;

      while (<IN>) {
          print S;
      }
      sleep 3;
      do dokill();
  } else {
      while(<S>) {
          print;
      }
  }

  sub dokill {
      kill 9,$child if $child;
  }

  10.8.  Ein if fr Netzwerkdrucker

  Eine Besonderheit von lpd ist, da if fr Netzwerkdrucker nicht
  aufgerufen wird. Wenn das ntig sein sollte, kann man eine doppelte
  Warteschlange einstellen und den Job an die zweite Warteschlange
  weitergeben: Beispiel fr eine passende printcap:

       lj-5:remote-hplj:\
               :lp=/dev/null:sh:\
               :sd=/var/spool/lpd/lj-5:\
               :if=/usr/lib/lpd/filter-lj-5:
       lj-5-remote:lp=/dev/null:sh:rm=printer.name.com:\
               :rp=raw:sd=/var/spool/lpd/lj-5-raw:

  mit diesem filter-lj-5-Script:

       #!/bin/sh
       gs <options> -q -dSAFER -sOutputFile=- - | \
               lpr -Plj-5-remote -U$5

  Die -U-Option bei lpr funktioniert nur, wenn lpr als ein Daemon
  gestartet wurde und setzt den Namen des Auftraggebers in der
  weitergegebenen Warteschlange. Man sollte eventuell eine robustere
  Methode verwenden, um den Usernamen zu ermitteln, denn manchmal ist es
  nicht Argument 5. Siehe auch die Man-page zu printcap.

  11.  Wie man auf einem Faxgert druckt

  11.1.  Mit einem Faxmodem

  Es gibt einige Faxprogramme, mit denen man faxen und Dokumente
  empfangen kann. Eines der komplexesten ist Sam Lefflers HylaFax,
  erhltlich von ftp.sgi.com.  Es untersttzt alle mglichen Funktionen
  von mehreren Modems bis Ausstrahlung.
  Es gibt auch eine bessere Wahl fr die meisten Linuxboxen: efax. Das
  ist ein einfaches Programm, das Faxe sendet. Das getty-Programm mgetty
  kann Faxe empfangen (und sogar Sprache mit einigen Modems!).

  11.2.  Mit dem Remote Printing Service

  Es gibt einen experimentellen Dienst, an den man eine eMail senden
  kann, die dann irgendwo anders auf einem Faxgert erscheint. Es werden
  Formate wie PostScript untersttzt, so da es ein sehr sinnvoller
  Dienst ist, obwohl die globale Untersttzung sehr lckenhaft ist. Fr
  weitere Informationen siehe die FAX-FAQ
  (http://www.town.hall.org/fax/faq.html).

  12.  Wie man etwas Druckbares herstellt.

  Hier kommt man in ein wahres Rattennest an Software. Grundstzlich
  kann man vier Typen von Binrdateien mit unterschiedlichem Erfolg
  laufen lassen: Linux, iBCS, Win16/Win32s (mit dosemu und irgendwann
  mit Wine) und Mac/68k (mit Executor). Hier werden nur reine Linux und
  UNIX-Programme behandelt, aber man sollte erwhnen, da WordPerfect
  fr SCO und sehr wahrscheinlich weitere kommerzielle
  Textverarbeitungsprogramme gut unter Linux iBCS-Emulation laufen.

  Fr Linux selbst ist man auf die fr UNIX generell erhltlichen
  Programme beschrnkt:

  12.1.  Formatierungssprachen

  Die meisten Formatierungssprachen sind am besten fr groe oder sich
  wiederholende Projekte geeignet, in denen man dem Computer die
  Kontrolle ber das Layout berlassen mchte, damit alles einheitlich
  aussieht. Ein schnes Zeichen in einer Formatierungssprache knnte
  schmerzhaft sein...

     nroff
        Diese war eine der ersten Formatierungssprachen fr UNIX. Man-
        pages sind das hufigste Beispiel fr Texte, die mit *roff-
        Makros formatiert wurden; einige Leute schwren darauf, aber
        nroff hat fr den Autor die geheimnisvollste Syntax und ist
        deshalb wohl die schlechteste Wahl fr neue Texte. Man sollte
        aber trotzdem wissen, da man eine Man-page mit groff direkt
        nach PostScript konvertieren kann. Die meisten man-Befehle
        machen das mit man -t foo | lpr.

     TeX
        TeX und das Makropaket LaTeX gehren zu den am hufigsten
        verwendeten Formatierungssprachen auf UNIX. Technische Werke
        werden hufig in LaTeX geschrieben, denn es vereinfacht die
        Layoutfragen stark und ist weiterhin eines der wenigen
        Textverarbeitungssystemen, da mathematische Aspekte komplett
        und gut untersttzt. Die Ausgabe von TeX ist dvi und kann mit
        dvips oder dvilj nach PostScript oder Hewlett Packards PCL
        konvertiert werden.

     SGML
        Es gibt mindestens einen freien sgml-Parser fr Unix und Linux;
        es bildet die Basis von Linuxdoc-SGMLs selbst entwickelten
        Dokumentensystem. Es kann auch andere DTDs untersttzen.

     HTML
        Jemand hat vorgeschlagen, einfache Projekte in HTML zu schreiben
        und mit Netscape auszudrucken. Der Autor widerspricht dem.

  12.2.  WYSIWYG

  Es gibt sehr wenige WYSIWYG-Textverarbeitungsprogramme. Weitere
  Programme sind immer gefragt, und man mge den Autor auf jegliche
  Auslassungen hinweisen.

     LyX
        LyriX ist ein Frontend fr LaTeX, das vielversprechend aussieht.
        Auf der LyX Homepage (http://www-pu.informatik.uni-
        tuebingen.de/users/ettrich/) gibt es weitere Informationen.

     Das Andrew User Interface System
        AUIS beinhaltet ez, ein WYSIWYG-artiges Editor mit sehr
        grundlegenden Textverarnbeitungsfhigkeiten, HTML und vollem
        MIME eMail und Newsgroup-Untersttzung.

     Kommerzielle Angebote
        Zumindest Caldera und Red Hat beeinhalten Pakete mit den
        blichen Office-Anwendungen wie eine WYSIWYG-Textverarbeitung
        und eine Tabellenkalkulation. Der Autor nimmt an, da sie sehr
        gut funktionieren, hat sie aber noch nie benutzt. Er nimmt an,
        da Caldera auch Sun's WABI vertreibt, so da man vielleicht
        etwas wie MS Office laufen lassen kann, wenn man mit den Dateien
        anderer Leute arbeiten mu.

        Jeff Phillips (jeff@I_RATUS.org) verwendet Caldera's WordPerfect
        fr Linux (auf Slackware) und sagt, da es gut funktioniert.  Es
        besitzt anscheinend eingebaute Druckeruntersttzung, wie zu
        erwarten war. Caldera sollte mehr Informationen unter
        http://www.caldera.com/ haben.

        RedHat vertreibt ein Paket namens Applixware; ihre Website ist
        unter http://www.redhat.com zu erreichen.

        Sonstige Verkufer werden gebeten, den Autor ber ihre Produkte
        zu unterrichten.

  13.  Ghostscript.

  Ghostscript ist ein unheimlich wichtiges Programm fr das Drucken
  unter Linux. Die meisten Druckprogramme unter Linux erzeugen
  PostScript, was normalerweise eine 150-450-DM-Option fr Drucker ist.
  Ghostscript ist allerdings kostenlos und kann aus PostScript die
  jeweilige Druckersprache erzeugen. Wenn es mit dem lpd-Inputfilter
  zusammengebracht wird, erzeugt es einen virtuellen PostScript-Drucker
  und vereinfacht das Leben immens.

  Es gibt zwei Arten von Ghostscript. Die kommerzielle Version, Aladdin
  Ghostscript, darf kostenlos fr den privaten Gebrauch verwendet
  werden, aber nicht in kommerziellen Linux-Distributionen vertrieben
  werden.  Es ist normalerweise dem freien Ghostscript etwa ein Jahr
  voraus; im Moment untersttzt Aladdin Ghostscript zum Beispiel das
  Portable Document Format vom Adobe Acrobat, was die lteren
  Ghostscripts nicht machen.

  Die freie Version von Ghostscript ist GNU Ghostscript, einfach eine
  ltere Version von Aladdin Ghostscript, freundlicherweise GNU
  berlassen. (Ehre an Aladdin fr dieses Verfahren; mehr
  Softwareverkufer sollten freie Software so untersttzen).

  Ghostscripts Hauptnachteil sind seine Schriftarten, die aus Bitmap-
  Scans der Zeichen erstellt wurden. Bessere, aber kommerziell
  lizensierte Schriftarten knnen aus mehreren Quellen erhalten werden,
  da Ghostscript Type 1 Adobe Fonts lesen kann. Adobe vertreibt lesbare
  Schriftarten mit ihren Acrobat PDF-Leser, oder man kann die
  Schriftarten von Adobes ATM oder einem Fontpack nutzen.

  Was auch immer man mit gs macht, man sollte es immer mit der Option
  zum Verhindern von Dateizugriffen (-dSAFER) starten. PostScript ist
  eine komplett funktionale Sprache und ein schlechtes PostScript-
  Programm kann ziemliche Kopfschmerzen verursachen.

  13.1.  Die Ausgabe von Ghostscript verbessern

  Man kann einige Sachen machen, wenn gs' Ausgabe nicht
  zufriedenstellend ist (man kann wirklich alles machen, was man will,
  man hat ja den Quelltext).

  13.1.1.  Position der Ausgabe und Gre

  Die Position, Gre und Vergrerung einer Seite wird durch die
  drucker-spezifischen Treiber in Ghostscript kontrolliert. Wenn die
  Seiten zu kurz oder zu lang, oder um den Faktor Zwei zu gro sind,
  knnte man in das Quellmodul des Treibers schauen und alle Parameter,
  die einem auffallen, anpassen. Leider ist jeder Treiber anders,
  deswegen gibt es keine Anleitung, was einzustellen ist, aber die
  meisten sind vernnftig kommentiert.

  13.1.2.  Gamma, Punktgren, etc.

  Die meisten nicht-Laserdrucker leiden darunter, da ihre Punkte
  ziemlich gro sind. Dadurch erscheinen die Bilder zu dunkel. Wenn man
  das feststellt, sollte man seine eigene bertragungsfunktion nutzen.
  Man erstellt einfach die folgende Datei im Ghostscript-lib-Verzeichnis
  und fgt den Namen zum gs-Aufruf direkt vor der eigentlichen Datei
  ein.  Die eigentlichem Werte mssen dem eigenen Drucker angepat
  werden.  Niedrigere Werte erzeugen einen helleren Druck. Besonders
  wenn der Treiber einen Floyd-Steinberg-Algorithmus verwenden, um
  Farben zu rastern, sollten niedrige Werte (0.2 - 0.15) verwendet
  werden.

       ---8<---- gamma.ps ----8<---
       %!
       %Uebersetzungsfunktionen fuer Cyan Magenta Gelb Schwarz
       {0.3 exp} {0.3 exp} {0.3 exp} {0.3 exp} setcolortransfer
       ---8<------------------8<---

  Es ist auch mglich, Drucker, die einen Farbfehler haben, zu
  reparieren, indem diese Werte verndert werden. Wenn man etwas
  derartiges versucht, sollte man die Datei colorcir.ps, die mit
  Ghostscript kommt (im examples-Verzeichnis) als Testseite verwenden.

  14.  Voransicht von druckbaren Sachen auf dem Bildschirm

  Fast alles Druckbare kann auch auf dem Bildschirm betrachtet werden.

  14.1.  PostScript

  Ghostscript besitzt einen X11-Treiber, der am besten unter der
  Verwaltung des PostScript-Vorbetrachters Ghostview verwendet wird. Die
  neuesten Versionen dieser Programme sollten auch PDF-Dateien
  betrachten knnen.

  14.2.  TeX dvi

  TeX DeVice-Independant-files (gerteunabhngige Dateien) knnen unter
  X11 mit xdvi betrachtet werden. Moderne Versionen von xdvi rufen
  Ghostscript auf, um PostScript-Spezialitten zu verarbeiten.

  Es gibt ebenfalls einen VT100-Treiber. Er wird dgvt genannt.  Tmview
  arbeitet mit Linux und svgalib, falls das alles ist, was funktioniert.

  15.  Credits

  Die Informationen ber smbprint sind aus einem Artikel von Marcel
  Roelofs (marcel@paragon.nl).

  Die Informationen ber nprint, um NetWare-Drucker zu verwenden, wurde
  von Michael Smith (mikes@bioch.ox.ac.uk) zur Verfgung gestellt.

  Der Abschnitt "Serielle Drucker und lpd" ist von Andrew Tefft
  (teffta@engr.dnet.ge.com).

  Der Teil ber gammas und soweiter fr gs wurde eingeschickt von
  Andreas (quasi@hub-fue.franken.de).

  Die zwei Abschnitte ber die 30 Sekunden-closing_wait des seriellen
  Treibers sind von Chris Johnson (cdj@netcom.com).

