PostScript-Anwendungshinweise

Viele Dokumente, von deren gedruckten Exemplaren man sich hohe Qualität verspricht, werden im PS-Format (PostScript) entweder auf dem Umweg über eine Plattendatei, oder direkt auf einen PS-fähigen Drucker ausgegeben. Nicht immer kann der Ausdruck mit den Erwartungen Schritt halten, speziell wenn er gar nicht oder nur in Bruchstücken aus dem Drucker quellen mag. Die Ursachen können vielfältig sein, einige sollen hier näher untersucht und Methoden zur Lösung gegeben werden.
Diese beruhen darauf, daß PS-Dateien Klartextprogramme im ASCII-Format enthalten, die verändert werden können, um den Druck erfolgreich abzuschließen.

Unterschied zwischen PS und EPS

Einige unerwartete Effekte können vermieden werden, wenn man sich über den prinzipiellen Unterschied zwischen PS und EPS (Encapsulated PostScript) im Klaren ist. Er ist sehr subtil und oftmals kaum zu erkennen. Grundsätzlich ist PS dazu gedacht, komplette Dokumente zu erzeugen, während EPS jeweils einen Teil eines Dokumentes (z. B. eine Abbildung) enthält, der kein eigenständiges Leben führt und nur durch die Einfügung in eine PS-Datei sinnvoll wird.
Betrachten wir den Vorgang etwas genauer: Ein Autor bastelt an einem Dokument, lädt einige EPS-Illustrationen ein und druckt das Ganze als PS aus.
Sowohl die EPS- als auch die PS-Dateien sind in derselben Programmiersprache, eben PostScript, geschrieben. Das EPS-Programm beschreibt jeweils eine (kleinere oder größere) Illustration und enthält zusätzlich zu dieser Beschreibung jedoch noch die wesentlichen Zeilen
%!PS-Adobe-3.0 EPSF-1.2
%%BoundingBox: 100 120 340 234
unmittelbar zu Beginn. Die Bounding Box ist ein Rechteck, das die Illustration engstmöglich umschließt und so eindeutig deren Lage und Ausdehnung beschreibt. Die vier Zahlen sind die Koordinaten der linken unteren und der rechten oberen Ecke dieses Rechtecks in Einheiten von 1/72 Zoll. Wenn Sie eine solche EPS-Abbildung einladen, kann Ihr Programm anhand dieser Zahlen die Abbildung korrekt zentrieren und hinreichend Platz für sie vorsehen. Beim Druck als PS werden solche Abbildungen komplett in das PS-File übernommen. PS-Dateien dagegen sind nicht dazu gedacht, in ein anderes Dokument eingeladen zu werden (sie sind ja schon abgeschlossene Dokumente) und enthalten daher weder den Zusatz EPSF-1.2 noch die Bounding Box-Info. Dafür können PS-Dateien mehrseitige Dokumente beschreiben.
Genau genommen kann eine EPS-Datei nicht einmal eine einzige Seite erzeugen: Der Versuch, ein EPS-Bild direkt zu drucken, bringt zwar keinen Fehler, dafür aber meistens nur ein leeres Blatt. Dies beruht darauf, daß der Befehl, der eine fertige Seite druckt (showpage), in EPS verboten ist oder zumindest beim Einladen von EPS durch die Textverarbeitung unwirksam gemacht werden muß.
Viele Programmierer schreiben daher diesen Befehl gar nicht erst in die EPS-Datei, so daß deren Druck kein sichtbares Ergebnis bringt. Nur wenn der showpage-Befehl vorhanden ist, kann die EPS-Datei auch separat ausgedruckt werden. Möchten Sie daher eine EPS-Illustration zu Kontrollzwecken drucken und erhalten nur leeres Papier, fügen Sie am Ende der Datei den PostScript-Befehl
showpage
ein!

Praxis

Aus den Charakteristika der beiden PS-Varianten können nun einige Schlüsse für die Praxis gezogen werden:

Umwandlung von PS in EPS

Um aus einer PS-Datei ein EPS-Format zu erzeugen, benutzen Sie das Programm PS2EPSI, das aus mehreren Teilen besteht: einem gleichnamigem .PS-File, das die eigentliche Arbeit erledigt, sowie einem (DOS-)Shellscript namens PS2EPSI.BAT für den Aufruf.
Bei einer vollständigen Verteilung des Previewers GS (GS respektive GhostScript ist ein Programm, mit dem PS-Dateien auf dem Bildschirm dargestellt werden können) sollten alle Dateien mitgeliefert werden. Unter DOS schreiben Sie
ps2epsi test.ps test.eps
und erhalten ohne weiteres eine korrekte EPS-Datei.
Für das Arbeiten unter VMS existiert im GS-Paket keine geeignete Kommandodatei; Sie können jedoch im ZDV den Aufruf
$ @disk_swa:[gs301]ps2 test.ps test.eps
dafür einsetzen.

Zeilenumbrüche

Besonders die PS-Treiber von Winword und anderen Win-Produkten sind sehr erfindungsreich beim Erzeugen von seltsamen PS-Dateien. Oft gelingt es, 10 von 20 Seiten zu drucken, um dann ratlos vor einem Fehlerblatt zu stehen. "/undefined in xyz" steht dann meist noch zu lesen, bevor der Druckvorgang abgebrochen wurde. Allgemeine Erklärungen zu diesem Phänomen können vermutlich nur die Programmierer der PS-Treiber geben, uns hilft ein kleiner Trick in der PS-Datei oftmals weiter.
Laden Sie die Datei in einen Editor und suchen nach der Zeichenfolge "xyz". Vielleicht haben Sie Glück und Ihr PS-Treiber hat einen der folgenden Fehler gemacht:

Multimode-Drucker

Normalerweise kann eine PS-Datei erwarten, auch auf einem PS-Drucker ausgegeben zu werden. Was aber, wenn der Drucker, wie etwa der HP Laserjet, u. a. auch den PCL-Modus beherrscht? Viele solcher Drucker können so konfiguriert werden, daß sie standardmäßig in Modus A laufen und durch Senden einiger Daten vor der eigentlichen Druckdatei in Modus B umgestellt werden. Drucken Sie aus einem echten Betriebssystem heraus (Unix, VMS ...), kann ein Druckerfilter anhand der ersten Zeile der Druckdatei erkennen, um welches Format es sich handelt. PS-Dateien sollten immer mit
%!PS-Adobe-3.0
(ggf. auch andere Zahlen) beginnen. Je nach dem aktuellen Drukkermodus und dem Format der Datei wird die korrekte Umschaltung gesendet.
PCs unter Windows schaffen es zuweilen, beim Erzeugen von PS für einen solchen Multi-Mode-Drucker *jedesmal* vor einem PS-Programm die Umschaltsequenz PCL->PostScript vorauszusenden (wohl zur Sicherheit). Viele Drucker, die sich bereits im richtigen PS-Modus befinden und auf PostScript-Befehle hoffen, reagieren mit Unverständnis auf die binären Steuerzeichen. Als Resultat wird oftmals gar nichts gedruckt, bestenfalls ein end of job-Blatt.
Lösung: Falls Sie das Dokument in eine PS-Datei gedruckt haben, können Sie mit einem Editor die ersten kryptischen Zeilen manuell löschen. Die erste sinnvolle Zeile eines PS-Programm muß die oben erwähnte %!PS-Zeile sein.
Das Prozentzeichen muß dabei das allererste Zeichen des Files sein.

Das Control-D

Eng verwandt mit dem vorigen ist folgendes Problem: Einige Druckertreiber (hier speziell Windows-Druckertreiber) wollen immer sicherstellen, daß jede Druckdatei auf einer eigenen Seite beginnt, und fügen deshalb ein Control-D (Ascii 4) als allererstes Zeichen in die Ausgabedatei ein. Nach dem soeben Gesagten kann ein PS-Filter dann allerdings kein %!PS mehr finden, wenn dieses an zweiter statt erster Stelle im File steht.
Die Lösung besteht wiederum darin, sämtliche Zeichen (auch wenn diese von Ihrem Lieblingseditor nicht sichtbar, z. B. nur durch ein scheinbares Leerzeichen, dargestellt werden) vor dem %!PS zu löschen.

Seiten extrahieren

Gelegentlich hat man eine Druckdatei vorliegen, von der man nur einige wenige Seiten erneut drucken möchte (etwa, um gezielt Seiten mit einzelnen Rechtschreibfehlern korrekt auszugeben). Kein Problem, wenn man gerade auch die passende Textverarbeitung dabei hat, man macht eben eine neue Druckdatei. Aber es geht auch, falls nur die Gesamtdatei vorliegt: Rufen Sie diese mit einem Texteditor auf und suchen Sie nach dem Begriff %%Page: # #, wobei # für die gewünschte Seitenzahl steht. Soll nur die Seite 34 ausgegeben werden, müssen Sie alles ab %%Page: 1 1, der ersten Seite, bis %%Page: 34 35 löschen und weiterhin alles von %%Page: 35 35 bis zum abschließenden Kommentar %%Trailer.
Ebenso können durch Kopieren des fraglichen Abschnittes einzelne Seiten(bereiche) verdoppelt werden, falls man bestimmte Seiten mehrfach benötigt.
Achtung: das Verfahren funktioniert nur, wenn die Textverarbeitung sich auch an die PostScript Document Structure-Konventionen hält - nicht jeder Windows-Treiber tut dies auch! Nutzer von LaTeX/DVIPS haben hier klare Vorteile.

Seiten vergrößern

Möchten Sie Ihre A4-Broschüre zu einem DIN A2-Plakat machen? Kein Problem, suchen Sie nach dem Auftreten von %%Page und fügen Sie unmittelbar danach den Befehl
2 2 scale
ein, um sowohl die horizontale wie auch die vertikale Achse auf das Doppelte zu strecken. Mit den Zahlen "2 2" erreichen Sie eine Vergrösserung von A4 auf A2 oder A5 auf A3 etc. Für andere Stufen müssen Sie die entsprechenden Vielfachen von Wurzel(2)=1,41 einsetzen:
 
von A4 auf
Zahlen
A3
1.41 1.41
A2
2 2
A1
4 4
A0
4 4

Das Verfahren ist wiederum für LaTeX/DVIPS am besten einsetzbar, da PS-Dateien von anderen PS-Treibern Ihnen häufig mißtrauen und hintergründig sicherstellen, daß tatsächlich ein A4-Ausdruck erscheint.

Duplex-Druck

Unter Duplex versteht man das Drucken auf Vorder- und Rückseite eines Blattes Papier. Das setzt natürlich die entsprechende Fähigkeit des Druckers voraus (Duplexeinheit). Dazu werden im Postscripttext Anweisungen der Form
statusdict begin true setduplexmode false settumble end
statusdict begin true settumble end
true statusdict /setduplexmode get exec false statusdict /settumble get exec
<</Duplex true /Tumble false>> setpagedevice
verwendet, wobei Tumble für "kopfstehend" verwendet wird, d.h. die Rückseite wird dann seitenverkehrt ausgegeben (sinnvoll z.B. bei Buchdruck). Die letzte Anweisung ist eigtl. keine Postscript-Anweisung und wird von Druckertreibern für spezielle Drucker benutzt, diese sind also auch nicht übertragbar auf Drucker verschiedenen Typs.
Ob Duplex gedruckt wird oder nicht entscheidet die Option true ode false (in Stackschreibweise vor der Modusangabe !). Hat ein Drucker keine Duplexeinheit, dann werden diese Anweisungen einfach ignoriert.

Resumee

Zusammenfassend kann man sagen, daß PS-Druckfiles durch ihr ASCII-Format erlauben, in einem Texteditor nach dem fehlerverursachenden Begriff zu fahnden und mit manchmal nur geringen Kenntnissen von PostScript Fehler, die vom Treiber verursacht wurden, manuell zu beheben und doch noch einen Ausdruck zu erhalten.
Am häufigsten dürften wohl Zeilenumbrüche inmitten von Befehlsworten auftreten sowie ungewollte Steuersequenzen unmittelbar zu Beginn des Druckfiles.



Matthias Ehrig: April 2000