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:
-
Ganze (mehrseitige) Dokumente werden NICHT als EPS gedruckt, falls Ihr
Programm Ihnen das gestatten sollte. Es ist zwar kein Fehler, verführt
aber leicht zu falscher Anwendung, speziell später, wenn man die Herkunft
ominöser EPS-Dateien vergessen hat.
-
PS-Dateien können in der Regel nicht in andere Dokumente übernommen
werden. Dazu sind sie nicht geschaffen und enthalten meist auch unzweckmäßige
Informationen dazu. Verwenden Sie hierzu das EPS-Format.
-
Bloßes Umbenennen der Dateien (rename *.ps *.eps) bringt
keineswegs die erhoffte Konversion zwischen beiden Formaten. Hierfür
existieren allerdings Hilfsprogramme, wobei die Richtung EPS -> PS ohnehin
von einer Applikation (Textsatzsystem etc.) beim Drucken durchgeführt
wird.
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:
-
"xyz" ist normalerweise ein sinnvoll lesbarer Name (zum Beispiel "setcolorscreen");
an einer Stelle hat der Treiber einen Zeilenumbruch inmitten des Begriffes
plaziert (wie bei "setco lorscreen"), so daß der PS-Interpreter den
Befehl nicht mehr erkennen kann. Löschen Sie dann den Umbruch und
fügen Sie somit das Befehlswort wieder zusammen.
-
Manchmal werden in einem Vorspann verschiedene Parametersätze in Tabellen
gespeichert, zum Beispiel Abmessungen für die Papierformate A3, A4,
A5, B4 und B5, obwohl das Dokument nur in einer einzigen, bestimmten Größe
gedruckt werden soll. Nun kommt es zuweilen vor, daß in der Tabelle
zwar die verschiedenen Formatkennbuchstaben (A5 etc.) stehen, aber ohne
zugehörige Daten. Beim Versuch des Druckers, alle Kennbuchstaben mit
Daten zu verbinden, scheitert er am Fehlen der an sich auch unnötigen
Parameter. Fehler "invalid access in ---put--" und kurz darauf
"--dicttype-- /a5": Hier kann es helfen, im Editor nach dem erwähnten
Begriff (a5) zu suchen und ersatzlos zu streichen. Wohlgemerkt, je nach
genauer Natur des Fehlers kann dies natürlich auch zu einer Verschlimmbesserung
führen!
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