Buntes Treiben

Unix-Systeme waren früher nicht reich gesegnet mit Druckerunterstützung: Für Hersteller lohnte das Treiberschreiben kaum. Das Gimp-Print-Projekt hat jetzt mit seiner Software ein Stadium erreicht, das vielen Tintenstrahlern Fotoqualität entlockt - auch unabhängig von Gimp.

vorlesen Druckansicht 2 Kommentare lesen
Lesezeit: 14 Min.
Von
  • Kurt Pfeifle
Inhaltsverzeichnis

Einen Tintenstrahler von Linux aus anzusteuern, ist keine Kleinigkeit. Auflösungen von 2880 dpi für vier Farben (Cyan, Magenta, Gelb und Schwarz) wollen nicht nur zuerst errechnet sein. Da die Geräte über keinen nennenswerten Speicher verfügen, müssen die Rasterdaten beinahe ‘just in time’ an den Druckkopf übermittelt werden. Einige aktuelle Tintenstrahler verfügen über sieben Farben (jede der Grundfarben nochmals in einer helleren Variante) und verwenden variable Tröpfchengrößen, was feinere Abstufungen ermöglicht. Die neuesten Modelle zählen pro Farbe 48 oder mehr Tintendüsen, die bei jeder Horizontalbewegung des Druckkopfes aktiv sein können.

Diese Düsen müssen aus mechanischen Gründen allerdings mit einem vertikalen Abstand untereinander sitzen. Ein typischer Wert ist ein Abstand von acht Reihen. Um das Bild ohne sichtbare horizontale Streifen hellerer oder dunklerer Natur (bedingt durch minimale mechanische Unterschiede in den einzelnen Düsen) zu Papier zu bringen, muss ‘gewoben’ werden, sodass keine zwei aus derselben Düse stammenden Zeilen direkt untereinander sitzen.

Tintenstrahler verfügen über keine Eigenintelligenz, also muss der Treiber die nötige Zuordnung der Reihen an die einzelnen Jets bewerkstelligen. Da es bei A3-Vollfarbdruck in Fotoqualität leicht um Datenmengen von mehreren Hundert MByte geht, sind an die Treibersoftware hohe Anforderungen gestellt.

Mehr Infos

Die meisten Linux/Unix-Druckdateien existieren anfangs als PostScript. Zum Übertragen auf Papier braucht die Marking Engine eines Druckers jedoch Rasterdaten. Die Berechnung des endgültigen Punktmusters für den Zieldrucker aus den PostScript-Anweisungen (Raster Image Prozess, RIP) ist ein rechenintensiver Vorgang. Verfügt der Drucker selber über einen PostScript-Interpreter, erledigt dieser die Erzeugung der Rasterdaten.

Zum Ausdrucken auf Nicht-PostScript-Druckern ist auf dem Hostrechner mehr Aufwand nötig. Er muss den PostScript-Code in ein Format konvertieren, das die Marking Engine versteht. Unter Linux/Unix übernimmt Ghostscript einen Großteil dieser Arbeit. Es fungiert als Software-RIP, der gänzlich aus dem Zieldrucker heraus- und in den Clientrechner vorverlagert wurde.

Ghostscript, so unentbehrlich es für Linux ist, hat in seiner ‘klassischen’ Erscheinungsform den gravierenden Nachteil, aus modernen Tintenstrahlern nur höchst unbefriedigende Ergebnisse herauszuholen. Die GPL-Software Gimp-Print erledigt diese Aufgabe mit deutlich mehr Erfolg. Dabei ist es nicht allein auf seine Ur-Funktion als Plug-in im Gimp beschränkt. Man kann den Code auch zu einem Ghostscript-Filter kompilieren und so in eine klassische lpr/lpd-Umgebung mit printcap, magic und apsfilter einpassen oder gleich einen nativen CUPS-Filter daraus formen, der PPDs für 120 Druckermodelle fix und fertig mitbringt.

Die aktuelle Version unterstützt Farbdrucker der Hersteller Canon, Lexmark, Hewlett-Packard und Epson - viele davon treibt sie zu einer Qualität, die den Vergleich mit den herstellereigenen Windows-Treibern nicht zu scheuen braucht.

Alle nötigen Algorithmen haben die Entwickler selbst erstellt. Hierzu zählen vor allem die ‘Dithering’- und ‘Weaving’-Verfahren, über die die Druckerhersteller eifersüchtig wachen. Bei ‘Dithering’ geht es um die Entscheidung, ob an einer bestimmten Stelle ein Tintentropfen zu setzen ist oder nicht. Tintenspritzer müssen die im Prinzip kontinuierlichen Cyan-, Magenta-, Gelb- und Schwarzwerte eines Bildes nämlich durch diskrete Werte wiedergeben (siehe ‘Was ist Dithering?’). Sie können in der Regel nur ‘Tinte’ oder ‘nicht Tinte’ aufs Papier geben, während die Kathodenstrahlen eines Monitors die Bildschirmpixel mehr oder weniger hell aufleuchten lassen.

‘Weaving’ entscheidet über die Abfolge von Zeilen, die jeder einzelne Druckkopf besprüht und somit über die Reihenfolge, in der der Host die Rasterdaten zeilenweise an den Drucker schickt (siehe ‘Weaving vermeidet Muster’). Es muss gewährleisten,

  • dass genug Trocknungszeit verbleibt, bevor die nächsten Tröpfchen anderer Farbe in nächster Nähe aufschlagen,
  • und dass keine Düse mehrere unmittelbar benachbarte Zeilen erzeugt, sonst könnten sichtbare Querstreifen vorhandene Unterschiede in der Produktion (oder im Verschleiß) der Düsen zum Vorschein bringen.

Per Reverse Engineering mussten die Gimp-Print-Entwickler lediglich herausfinden, wie die einzelnen Düsen anzusteuern sind, damit sie einen Tropfen abfeuern, welches Kommando den Papiertransport um wie viele Reihen weiterschiebt et cetera. Als einziger Hersteller war Epson mit Informationen über diesen Teil seines geistigen Eigentums etwas freigebiger, was sich jetzt in der besseren Unterstützung für seine Geräte bemerkbar macht.

Gimp-Print ist erhältlich bei gimp-print.sourceforge.net. Nach dem Auspacken legt man durch Parameter beim ./configure-Aufruf fest, welche Varianten gewünscht sind. Für Gimp ist --with-gimp erforderlich, den Ghostscript-Treiber erzeugt --with-ghost und für CUPS-Unterstützung sorgt --with-cups. Anschließendes make und make install installieren beinahe alles. Zu beachten ist, dass durch --with-ghost noch kein fertiger Ghostscript-Filter entsteht, sondern nur passend vorbereiteter Quellcode. Dieser muss in die Ghostscript-Quellen (Versionen 5.50 bis 6.51) kopiert werden, und die Neukompilierung von Ghostscript erzeugt den Treiber stp.

Eine Liste der unterstützten Druckermodelle ist bei gimp-print.sourceforge.net zu finden. Sie umfasst viele aktuelle Modelle von Epson, Canon und HP. Fast alle Geräte der Epson-Stylus-Serie sind voll funktionsfähig. Bei den anderen kann es Einschränkungen geben. Insbesondere drucken die Stylus-Photo-Drucker in vollem 6-Farb-Modus, die meisten anderen jedoch nicht - hier ist man vorläufig auf vier Farben beschränkt. Die Farbausgabe ist für die Stylus-Baureihen derzeit am besten optimiert. Der 7-Farb-Modus ist im Sourcecode vorhanden, bisher aber auskommentiert, da diese Modelle in den USA noch nicht erhältlich sind.

Die Dokumentation gibt einen kompletten Überblick über unterstützte Kommandoparameter des Treibers. Dazu gehören, abhängig vom verwendeten Modell:

  • unterschiedliche Papierformate (‘A4’, ‘Letter’ und so weiter);
  • Qualitätstufen und Auflösungen (etwa ‘360 DPI Microweave’, ‘1440 x 720 DPI Four Pass Unidirectional’);
  • numerische Korrekturwerte für die drei Grundfarben Cyan, Magenta und Gelb sowie für Helligkeit (Brightness), den Gammawert (Kurvenform des Hell-Dunkel-Verlaufs), Kontrast, Druckdichte (Density, aufgetragene Tintenmenge) und Brillanz der Farben (Saturation);
  • der zu verwendende Dithering-Algorithmus (unter anderem ‘Very Fast’, ‘Adaptive Hybrid’);
  • Tintentyp (‘Six Color Photo’, ‘Black’);
  • Medientyp (‘Plain Paper’, ‘Premium Glossy Photo Paper’);
  • Medienquelle (‘Standard’, ‘Roll Feed’);
  • Ausgabetyp (‘Grayscale’, ‘Color’);
  • Imagetyp (‘Line art’, ‘Continuous-tone photographs’).

Ein Ghostscript-Kommando zum Ausdruck eines Farbfotos in höchster Qualität auf einem Stylus Photo 1290 könnte wie folgt aussehen:

gs -q \
-dSAFER \
-dNOPAUSE \
-sDEVICE=stp \
-sModel=escp2-1290 \
-dDensity=0.8 \
-r1440x720 \
-sQuality='1440 x 720 DPI Highest Quality' \
-dImageType=2 \
kurtbeimgleitschirmfliegen.ps | lpr

Um ein mit Kivio erstelltes Flussdiagramm in eine Datei zu drucken, ist Folgendes geeignet:

gs -sDEVICE=stp \
-sModel=escp2-1290 \
-dDensity=1.6 \
-dGamma=1.5 \
-dSaturation=0.9 \
-dBrightness=.4 \
-dImageType=1 \
-sOutputFile=/home/kurt/kivio.prn \
kivio.ps

Eine solche Ausgabedatei ist für den Drucker optimiert und womöglich auf einem anderen Modell nicht druckbar. Wer von der Kommandozeile drucken will (oder eine Befehlszeile für den Druck aus einem Script heraus zusammenbauen muss), sollte sich einige Dateien in den Gimp laden, dort den Druckdialog aufrufen und auf ‘Adjust Color ...’ klicken. Das kleine Vorschaufenster gibt einen gewissen Eindruck von dem, was sich auf dem Papier zeigen wird, wenn man an den Parametern für Brightness, Saturation, Contrast, Gamma, Cyan, Magenta oder Yellow herumspielt. Das spart viel Zeit, Papier und Tinte. Ein veränderter Density-Wert ist aber erst auf dem Papier festzustellen.

Kurt Pfeifle
kommt als Systemspezialist bei der Danka Deutschland GmbH vorwiegend mit Laserdruckern in Berührung. Neben der CUPS-FAQ betreut er seit neuestem das KDEPrint-Handbuch.

Mehr Infos

iX-TRACT

  • Gimp-Print entstand als Plug-in für die Bildbearbeitungssoftware Gimp. Es liefert auf aktuellen Tintenstrahldruckern bessere Qualität als übliche Ghostscript-Treiber.
  • Gimp-Print/stp kann im Rahmen jedes Ghostscript-Druck- und Spoolsystems (Berkeley-LPD, LPRng und so weiter) als Universaltreiber für mehr als 120 Modelle von Epson, HP, Lexmark und Canon eingepasst werden.
  • Bisher sind nur 6-Farb-Geräte von Epson vollständig unterstützt, bei Modellen anderer Hersteller nutzt Gimp-Print nur vier Farben.