Aus LinuxUser 10/2001

Der lange Weg der Druckdaten (Seite 2)

Abbildung 2: Dateikonvertierung und -übertragung bei PostScript- und Nicht-PostScript-Druckern
Abbildung 2: Dateikonvertierung und -übertragung bei PostScript- und Nicht-PostScript-Druckern

Das Software-RIP der Open-Source-Bewegung

Zum Ausdrucken auf PostScript-„ignoranten“ Druckern ist mehr Aufwand nötig. Der PostScript-Code muss bereits auf dem Host-Rechner für die Marking Engine „vorverdaut“ werden. Das unter Linux u. a. Unix-ähnlichen Systemen allgegenwärtige Ghostscript-Paket leistet bei dieser Präparierung unentbehrliche Dienste. Es fungiert hier sozusagen als Software-RIP, das gänzlich aus dem Zieldrucker heraus- und in den Client-Rechner vorverlagert wurde (Abbildung 2 rechts).

So unentbehrlich diese Software unter Linux ist – sie hat in ihrer „klassischen“ Erscheinungsform einige gravierende Nachteile:

  • Sie besteht aus zahllosen Einzelfiltern, deren Kommandozeilenoptionen oftmals undokumentiert oder sehr kryptisch sind.
  • Die Ausgabe-Qualität ist auf manchen Druckern mehr als mangelhaft (kein Wunder, wenn die Hersteller keine Spezifikationen zur Verfügung stellen).
  • Ihre Einzelfilter beruhen häufig auf den Beiträgen von Software-Entwicklern, die durch Reverse Engineering aufgrund eigener Bedürfnisse entstanden (weil sie Besitzer eines entsprechenden Druckers waren), jedoch zwischenzeitlich nicht mehr weitergepflegt werden.

Welche Ghostscript-Filter (auch „Treiber“ genannt) installiert sind, erfahren Sie mit dem Kommando gs -h. Ghostscript antwortet mit einer Kurzinformation über seinen Gebrauch und zählt dabei alle Filter auf, die es kennt (auf meinem Rechner sind es 175!).

Kasten 1: Gimp-Print

Wenn es um Grafikdruck geht, macht das klasssische Ghostscript speziell bei Tintenstrahlern oft keine gute Figur. Das kann daran liegen, dass der falsche Filter für den Zieldrucker definiert ist, denn manchmal gibt es gleich mehrere, die für ein bestimmtes Modell in Frage kommen.

Zwischenzeitlich gibt es mehrere Initiativen, um qualitativ hochwertige, freie Druckertreiber zu entwickeln. Am weitesten ist hier das Gimp-Print-Projekt [5], dessen Filtersoftware sich nicht nur innerhalb dieses Programms, sondern mit allen Druck- und Spool-Systemen verwenden lässt.

Ursprünglich ein Druck-Plugin für den Gimp, hat es sich inzwischen zu einer Art Universaltreiber für Tintenstrahler gemausert. Der Quellcode lässt sich sowohl als Gimp-Druck-Plugin, als auch als Standard-Ghostscript-Filter (dann stp genannt) und als nativer CUPS-Treiber (fix und fertig mit PPDs (siehe Text) für 120 Druckermodelle der Hersteller Epson, Canon, HP, Compaq und Lexmark) kompilieren.

Das Berechnen von Rasterdaten aus dem PostScript-Code ist gerade bei Tintenstrahlern erst die halbe Miete. Denn im Unterschied zu Laserdruckern wird hier nicht die gesamte Seite auf einmal auf das Papier übertragen, sondern durch den Druckkopf in zeilenartigen Bewegungen sequentiell aufgesprüht. Druckköpfe müssen bis zu sieben verschiedene Farben verarbeiten. Das führt zu gigantischen Datenmengen: Eine A4-Seite in Foto-Qualität erfordert leicht mehrere 100 MB (Raster-)Daten.

Pro Druckkopf können mehr als 100 Tintendüsen in Betrieb sein. Diese sind jedoch nicht „dicht an dicht“ angeordnet. Für die volle Deckung wird die Seite daher durch eine Art „Weben“ (Weaving) aufgebaut: Linien werden nicht in derselben Reihenfolge übertragen und gedruckt, in der sie auf dem Papier erscheinen. Dies stellt hohe Anforderungen an die Qualität der Rechen-Algorithmen. Gimp-Print hat bei der Lösung dieser Aufgabe bereits bravouröse Leistungen erbracht, und zwar weitgehend ohne Zugriff auf Hersteller-Dokumentation. Man kann heute mit vielen Tintenstrahlern von Linux aus Foto-Qualität produzieren, die das Ergebnis mancher Hersteller-Treiber für Windows übertrifft. Gimp-Print wird auch in eine der nächsten GPL-Versionen von Ghostscript eingehen.

Magische Filter

Oft sollen Dateien gedruckt werden, die in einem Grafikformat (wie TIFF, GIF, JPEG, PDF, PNM, PNG, Sun Raster usw.) vorliegen. Nun gibt es zwar zahlreiche Tools und „Filter“, die daraus PostScript erzeugen können und sich per Kommandozeile bedienen lassen. Doch anschließend muss weiter konvertiert werden, nämlich mit einem Ghostscript-Filter ins Drucker-Format.

Da der manuelle Gebrauch von Ghostscript (und der Vor-Filter zum Erzeugen von PostScript) selbst vielen Kommandozeilen-Freaks bei Weitem zu umständlich ist, versuchen verschiedene Ansätze, diese Aufgabe zu vereinfachen. Am erfolgreichsten sind dabei die beiden Filterskripte apsfilter und magicfilter[7]. Diese führen zahllose Tools „unter einem Dach“ zusammen. Sie erkennen automatisch das Format der Input-Datei, erzeugen daraus mit einem passenden Vor-Filter PostScript und generieren mit Hilfe von Ghostscript das Rasterformat für den Zieldrucker. Bei SuSE übernimmt APSfilter diese Koordinationsaufgabe, bei neueren Red-Hat-Ausgaben Magicfilter (früher rhs-printfilter). Auch Debian setzt auf Magicfilter.

Diese Filterkette funktioniert in der Regel sehr zuverlässig. Allerdings lässt sie den Anwender bei der Selektion gerätespezifischer Optionen (angefangen von der allereinfachsten Papierfachanwahl, gar nicht zu reden vom Lochen und Heften des Outputs) völlig im Stich.

Spulen und Drucken

Damit die konvertierten Druckdaten nicht mit anderen Druckjobs ins Gehege kommen, werden sie nicht etwa direkt an den Drucker, sondern an ein Druck- und Spool-System geschickt. Das ist verantwortlich für die geregelte Abwicklung aller Druckaufträge auf dem System.

Die dazu am häufigsten verwendete Software ist nach wie vor der BSD-Line-Printer-Daemon lpd (bei SuSE im Paket lprold enthalten). Ihm zugrunde liegt das rund 30 Jahre alte Protokoll LPR/LPD („Line Printer Remote/Line Printer Daemon“) für das Drucken im Netzwerk.

Zeilendrucker waren Stand der Technik, als LPD zum Übertragungs- und Handhabungsprogramm für Druckdaten entwickelt wurde. Obwohl sich die zugrundeliegende Druck-Technik und auch der Umfang der Vernetzung gewaltig entwickelt hat, blieb das Basisprotokoll für Netzwerkdruck jahrzehntelang auf dem technischen Stand der Line-Printer-Ära stehen. Es leidet u. a. an mangelnden Authentifizierungsmöglichkeiten für die Nutzer, fehlender Verschlüsselung der Druckdaten und ungenügenden Übergabemöglichkeiten für Druckparameter.

Manche seiner Schwächen werden durch das neuere LPRng gemildert (bei SuSE eine Alternative, bei Red Hat Vorgabe), viele erst durch das moderne CUPS auf der Basis des IPP („Internet Printing Protocol“).

Die Druckerdefinitionen beim klassischen LPR/LPD-Ansatz verstecken sich in einer Datei namens /etc/printcap. Dort schaut der LPD bei jedem neuen Print-Job nach, wie er ihn behandeln soll. Obwohl man sie wie jede ASCII-Konfigurationsdatei auch von Hand bearbeiten kann (vgl. [8]), wird sie meist von distributionseigenen Tools (YaST bei SuSE, printtool bei Red Hat) erstellt und gewartet. Diese erfragen bei einer Druckerinstallation einige Angaben wie Druckername, zu verwendender Filter (=Treiber) und Anschlussart. Daraus generieren sie einen fertigen printcap-Eintrag, bei dem auch der Aufruf des zuständigen Filterskripts erfolgt. SuSE- u. a. APSfilter-Benutzern steht zusätzlich ein Setup-Programm mit dem Namen SETUP in /var/lib/apsfilter zur Verfügung, das beim Anlegen der printcap-Einträge hilfreich zur Seite steht.

Wichtig ist der Drucker mit dem Namen lp, denn er wird automatisch als der systemweit gültige Standarddrucker angesehen und bekommt alle Aufträge, bei denen nicht ein anderer Drucker namentlich genannt ist.

LinuxUser 10/2001 KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland

Hinterlasse einen Kommentar

  E-Mail Benachrichtigung  
Benachrichtige mich zu: