Ghostscript

Ghostscript ist der PostScript-Interpreter auf dem Unix-Sektor. Da er unter der GNU Public License (GPL) - einer vernünftigen Vereinbarung, Software zu vertreiben - veröffentlicht wurde, ist er ziemlich weit verbreitet. Mittlerweile gibt es jedoch auch Aladdin Ghostscript, eine Variante, die unter einer anderen Lizenz vertrieben wird.

PostScript ist eine Seitenbeschreibungssprache. Sie benutzt die geometrischen Elemente auf einer Seite, also Kreise, Kurven, Linien, Standardschriften etc. Dieses steht im Gegensatz zur Beschreibung von Seiten z.B. für einfache Drucker. Dort wird jeder Punkt einzeln angegeben. Es ist klar, daß PostScript dadurch erheblich weniger Platz für die gleiche Seite benötigt. Allerdings ist PostScript auch in der Lage solche Bitmuster-Grafiken einzufügen.

PostScript ist wahrscheinlich die vielseitigste und weltweit am häufigsten verwendete Sprache für Drucker. Hochwertige Laserdrucker sind mit einem eigenen PostScript-Interpreter ausgestattet, sodaß sie PostScript-Dateien direkt drucken können.

Es existieren Interpreter für viele Ausgabegeräte wie Monitore, X11-Bildschirme, MS-Windows und natürlich auch für herkömmliche Drucker. Einige Programmierer schreiben ihre Programme oder Grafiken sogar direkt in PostScript. Das Betriebssystem NeXTStep benutzt PostScript sogar, um auf den Bildschirm zuzugreifen.

PostScript-Interpreter bedeutet, daß sich Ghostscript wie ein PostScript-Drucker verhält und die Befehle nacheinander abarbeitet und auswertet. Je nach FrontEnd wird das Ergebnis auf dem Bildschirm dargestellt, auf der Konsole oder unter X11, oder in Druckerbefehle für einen speziellen Drucker umgerechnet.

Ghostscript ist durch seine Fähigkeit berühmt geworden, PostScript-Dateien auf "normalen" Druckern auszudrucken, insbesondere auf alten Nadeldruckern, die kein PostScript verstehen. Manche Benutzer haben sich schon gewundert, zu welchen Glanzleistungen ihr "einfacher" Drucker fähig ist, nachdem sie unter Linux eine PostScript-Datei ausgedruckt haben.

Das User-Interface 'ghostview'

Ghostview ist das eigentliche Anwendungsprogramm, das sogenannte Frontend. Dieses verarbeitet PostScript-Dateien und visualisiert sie. Es setzt die einen laufenden X-Server voraus. Trotz einer relativ spartanischen Oberfläche bietet es dem Benutzer über Menüs Möglichkeiten zur Kontrolle.

Beim Aufruf wird die anzuzeigende PostScript-Datei in der Kommandozeile angegeben. Dort können ebenfalls Papierformate (A4, A3, letter etc.) sowie Auflösung und Orientierung spezifiziert werden. Die konkrete Liste der Parameter entnehmen Sie bitte der Manual-Seite.

Das Ghostview-Fenster ist in 4 Regionen unterteilt. Links oben stehen Informationen über die angezeigte Datei: das Erstellungsdatum und der Dateiname, wie er in der PostScript-Datei gespeichert ist. Zusätzlich werden innerhalb der runden Klammern die Koordinaten der Maus im Ausgabefenster angezeigt.

Der längliche Bereich enthält die Seitenauswahl. In diesem werden die in der PostScript-Datei vorhandenen Seitenzahlen angezeigt. Diese Liste kann sich über mehrere Seiten erstrecken, sie ist dann mit einer Scroll-Leiste ausgestattet. Wird eine Zahl mit der mittleren Maustaste (bzw. beiden Maustasten bei einer Zweitasten-Maus) ausgewählt, so wird diese Seite im nebenstehenden Ausgabefenster angezeigt. Mit den anderen Maustasten können mehrere Seiten gemeinsam selektiert werden.

Es kann passieren, daß die PostScript-Datei mehrere Seiten enthält, die Seitenauswahl jedoch nur die erste anzeigt. In diesem Fall fehlen in der PostScript-Datei entsprechende Marker. Für einen Ausdruck ist dieses nicht hinderlich, da es sich dabei nur um Kommentare handelt. Welche Seite angezeigt werden soll, kann dann lediglich mit den Seitensprungtasten 'Page Up' und 'Page Down' bzw. über das Menü "Page" gesteuert werden.

Bearbeitung am Bildschirm

Im Ausgabefenster bewirkt ein Druck auf die Maustasten, daß ein neues Fenster geöffnet wird. In diesem wird der Bereich rund um die aktuelle Position des Mauscursors genommen und stark vergrößert dargestellt. Die linke Taste bewirkt normale Vergrößerung, während die rechte starke Vergrößerung hervorruft und die mittlere in ihrem Resultat dazwischen liegt.

Da Texte von Zeit zu Zeit im Querformat gedruckt werden, bietet Ghostview ebenfalls die Möglichkeit, die Ausrichtung auf dem Bildschirm dementsprechend zu ändern. Die vier Ausrichtungen verbergen sich hinter dem Menüpunkt "Orientation". Abbildung 1 zeigt die verschiedenen.

Abbildung 1: Papierausrchtungen

Viele Programme, die wie a2ps oder mpage ASCII-Texte in PostScript-Dateien umwandeln, schreiben zwei Seiten nebeneinander auf eine. Dieses Querformat ist gleichbedeutend mit dem Menüpunkt "Landscape".

Einige Programme erzeugen PostScript-Dateien, in denen die Bedeutung von "Landscape" und "Seascape" vertauscht ist. In den meisten Dokumenten ist das Querformat als eine Drehung um 90° im Uhrzeigersinn definiert. Hier gibt es jedoch keinen Standart, sodaß man von Zeit zu Zeit auf Dokumente stößt, in denen die Drehung entgegen dem Uhrzeigersinn durchgeführt wird. Mit dem Menüpunkt "Swap Landscape" kann daher das Verhalten von Ghostview entsprechend angepaßt werden.

Es ist möglich, eine Gruppe von Seiten auszuwählen. Dieses macht nur dann Sinn, wenn sie auch getrennt vom Gesamtdokument weiterbearbeitet werden können. Über den Menüpunkt "File" kann diese Gruppe in einer neuen Datei gespeichert oder separat ausgedruckt werden.

Über den Menüpunkt "Magstep" kann die Auflösung eingestellt werden. Ghostview vergrößert bzw. verkleinert dabei jeweils um eine Potenz von 1.2. Der Wert "0" ist die Voreinstellung (1.2^0 = 1, also keine Vergrößerung) und sollte ungefähr der verwendeten Papiergröße entsprechen. Ghostview unterstützt ein Spektrum von -5 bis 5.

Tastatursteuerung

Die Vergrößerung kann ebenfalls über die Tastatur eingestellt werden. Über die normalen Plus- und Minus-Tasten wird Ghostview angewiesen je um einen Faktor zu vergrößern bzw. zu verkleinern. Zudem kann die Vergrößerung zusätzlich über die Eingabe der Zahl auf dem normalen Tastaturblock (nicht aus dem Nummernblock) eingegeben werden.

Ist die angezeigte Seite größer als der Ausschnitt, so werden an den Rändern des Ausgabefensters Scrollbars angebracht. Der angezeigte Ausschnitt kann jedoch nicht nur mit der Maus bewegt werden, sondern auch über die vi-üblichen Cursortasten hjkl.

Die herkömmlichen Cursortasten sind tückischerweise vollkommen anders belegt. Mit ihnen kann die Ausrichtung des Dokuments bestimmt werden wie folgende Tabelle verdeutlicht.

hoch Portrait
runter Upside down
rechts Landscape
links Seascape
Tabelle 1: Belegung der Cursortasten

Das Backend 'gs'

Ghostscript besteht generell aus drei Komponenten. Da ist zum einen das Backend 'gs', das den eigentlichen Interpreter enthält. Die zweite Komponente besteht aus den Dateien mit Schriftdefinitionen für Ghostscript und schließlich ist da noch das bereits beschriebene grafische Frontend 'ghostview', welches eine komfortable Bedienung unter X11 erlaubt.

Abbildung 2: Ghostscript

Die eigentliche Arbeit wird von dem Programm 'gs' geleistet. Es nimmt den PostScript-Code und berechnet daraus eine Seite. Diese wird dann erneut für das gewählte Ausgabegerät umgerechnet und schließlich ausgegeben.

Der Quellcode enthält eine ganze Reihe von Definitionen für Ausgabegeräte. Welche tatsächlich eincompiliert wurden, kann man am besten mit dem Befehl "gs -h" herausfinden. Untenstehende Tabelle zeigt einige der wichtigsten.

eps9high Ausgabe für Epson 9 Nadeldrucker, hohe Qualität
dj500 Ausgabe in PCL für die HP-DeskJet 500-Serie oder Kompatible
dj500c Ausgabe in PCL für die HP-DeskJet 500-Serie oder Kompatible, Farbversion
x11 Ausgabe für X11 Fenster, als X11 Bitmap
dfaxhigh G3-Fax, hohe Qualität
dfaxlow G3-Fax, niedrige Qualität
pbm Ausgabe im pbm-Format zur Weiterverarbeitung mit netpbm oder pbmplus
tiffg3 Ausgabe im Grafikformat TIF
Tabelle 2: Einige wichtige Ausgabeformate von Ghostscript

Dieses Backend wird normalerweise nicht direkt vom Benutzer aufgerufen. Stattdessen wird es von verschiedene Anwendungsprogramme wie z.B. ghostview oder xdvi und dvips verwendet, um PostScript-Dateien zu verarbeiten.

So erzeugt z.B. ghostview das grafische Ausgabefenster samt Kontrollelementen und zusätzlichen Statusanzeigen. Die PostScript-Datei wird an das Backend übergeben, welches die Befehle interpretiert und im Ausgabefenster darstellt.

Eine weitere Anwendung, die dem Benutzer meist verborgen bleibt, befindet sich in den Paketen apsfilter und sendfax. Mittels Ghostscript rechnet apsfilter automatisch zu druckende PostScript-Dateien in die passende Sprache für Ihren Drucker um. Aus Anwendersicht erscheint es dann so, als wenn an dem Rechner direkt ein PostScript-Drucker angeschlossen wäre.

Wer Dateien in speziellen Formaten benötigt, z.B. um eine Datei auf einem Rechner auszudrucken, der an einem DOS-Rechner angeschlossen ist, der muß allerdings das Backend manuell aufrufen. Die unterstützten Parameter sehen auf den ersten Blick etwas kryptisch aus, doch auch daran kann man sich gewöhnen. Steht man öfter vor dieser Aufgabe, dann schreibt man sich am besten ein kleines Skript für die Aufrufe.

Das zu verwendende Ausgabegerät wird mit der Option "-sDEVICE=" angegeben. Das berechnete Ergebnis wird in eine Datei geschrieben, die mit der Option "-sOutputFile=%d<.endung>" angegeben werden muß. Wird "%d" benutzt, dann wird für jede Seite eine neue Datei erzeugt, ansonsten schreibt gs alles in eine Datei. Als letzter Parameter wird die PostScript-Datei selbst angegeben. Wenn die Seiten berechnet wurden, befindet man sich im Kommandomodus von gs, hier kommt man mit "quit" wieder auf die Shell.

Mit der Option "-r" bzw. "-rx" kann zusätzlich die verwendete Auflösung bestimmt werden. Bei diesen Optionen muß die Großschreibung beachtet werden, gs akzeptiert sie sonst nicht.

   echo quit|gs -dNOPAUSE -sDEVICE=dfaxhigh -sOutputFile=$1h%d.fax $1.ps 

  
Abbildung 3: Mögliches Skript zur Berechnung von Faxdateien.

Diese Aufteilung in Backend und Frontend bzw. User-Interface zeigt die üblicherweise unter Unix verwendete Technologie. Für viele Aufgaben existieren sogenannte Backends oder Server, die die eigentlichen Aufgaben erledigen. Sie besitzen wohldefinierte und dokumentierte Schnittstellen, welche von sogenannten Frontends benutzt werden. Diese werden benutzerfreundlich gestaltet, während die zugrundeliegenden Backends oftmals für Anwender nicht besonders einfach zu bedienen sind.

Martin Schulze

Quelle: Linux-Special vom Toolbox-Verlag '97


© Joey, 26 Dec '97