12 Text-zu-PostScript-Konverter
12.1 Generelle Bemerkungen
Dieses Kapitel beschreibt die Umwandlung von "flachen" ASCII-Textdateien in PostScript-Druckauftr�ge mit der Hilfe des Programms "pstext".
Das Programm "pstext" im Verzeichnis "$ESDIR" erm�glicht die Druckausgabe von einfachen ASCII-Dateien und Dateien im Format "nroff" auf PostScript-Druckern. Da PostScript-Drucker �blicherweise keine Druckauftr�ge akzeptieren k�nnen, die "flache" ASCII-Daten enthalten, ist es normalerweise nicht m�glich, UNIX-Programmauflistungen auszugeben oder von UNIX-Programmen zu drucken, die nur einen einfachen Matrixdrucker unterst�tzen. Die daf�r notwendige Umwandlung kann mit diesem Programm durchgef�hrt werden. "pstext" kann den Druckauftrag auch nach bestimmten Sequenzen durchsuchen, die mit dem "ESC"-Zeichen beginnen. Diese k�nnen verwendet werden, um einfache Hervorhebungseigenschaften wie Fettdruck, Unterstreichen und unterschiedliche Schriften einzurichten.
Der EtherShare-Druckserver ist in der Lage, zwischen "flachen" ASCII-Daten und PostScript-Daten automatisch zu unterscheiden und ruft dann das Programm "pstext" auf, um den Druckauftrag entsprechend umzuwandeln. Dadurch ist es normalerweise nicht notwendig, das Programm "pstext" manuell aufzurufen. Weitere Informationen finden Sie in der Beschreibung des Parameters
nomagic in
11.6 "Manuelle Druckerkonfiguration"
Das Programm "pstext" wird von der Befehlszeile gestartet, um eine vorhandene Datei f�r die Ausgabe umzuwandeln. Es kann auch aus einer UNIX-Pipe gestartet werden, um die direkte Druckausgabe aus einem Programm zu erm�glichen, ohne die ASCII-Druckdaten zun�chst auf die Festplatte speichern zu m�ssen. Das Programm "pstext" kann mit zus�tzlichen Parametern in der �blichen UNIX-Schreibweise bedient werden.
Im Folgenden sehen Sie ein Beispiel eines typischen Befehls zum Druck einer ASCII-Datei:
Dieser Befehl wandelt die Datei ".profile" in PostScript um und sendet sie an den Drucker "lw". Daf�r ruft das Programm "pstext" das Programm "lpr" mit dem angegebenen Druckernamen auf. "pstext" sucht "lpr" zuerst im Verzeichnis $ESDIR (�blicherweise "/usr/local/es") und dann in den Verzeichnissen, die im Pfad des Hosts angegeben wurden. Wenn der Parameter
-P <printername> weggelassen wird, dann erfolgt die Ausgabe des erzeugten PostScript-Codes zu Testzwecken am Terminal und nicht auf dem Drucker.
Im Folgenden sehen Sie ein Beispiel f�r die Verwendung von "pstext" in einer UNIX-Pipe. Es wird das aktuelle Verzeichnis an dem Drucker "lw" ausgegeben:
In folgendem Beispiel wird ein Eintrag aus dem UNIX-Handbuch gedruckt:
nroff -man /usr/man/man1/ls.1 | pstext -P lw
Die Befehlszeilen-Parameter von "pstext" bedeuten:
font
font ist die Schrift, mit der das Dokument gedruckt werden soll. Die Vorgabe ist hier "Courier", da diese eine der wenigen allgemein verf�gbaren Nicht-Proportionalschriften ist. Daher ist sie besonders geeignet f�r die Ausgabe von Listen und Tabellen.
size
size ist die Gr��e der Schrift in Punkt. Der vorgegebene Wert ist 10 Punkt. Ein Punkt sind 1/72 Zoll.
prepfile
prepfile ist der Name einer "Prep"-Datei der PostScript Sprache, die zum Start jedes Druckauftrags hinzugef�gt werden sollte. Wenn Sie den Parameter
-e nicht angeben, verwendet das Programm "pstext" automatisch die programminterne "Prep"-Datei, die die ben�tigten Definitionen enth�lt. Anstatt in der Befehlszeile �ber den Parameter
-e einen alternativen "Prep"-Dateinamen anzugeben, k�nnen Sie den Namen �ber die UNIX-Umgebungsvariablen "$PSTEXT_PREP" angeben. Dies vermeidet das Festlegen des Parameters
-e. Weitere Informationen zu Verwendung und zum Editieren der "Prep"-Datei finden Sie in der Beschreibung des Parameters
-d weiter unten im Text und in
12.4 "Umlaute und Sonderzeichen".
title
title wird automatisch in der ersten Zeile jeder Seite gedruckt. Wenn dieser Parameter ausgelassen wird, druckt "pstext" automatisch den Dateinamen und das Datum in die erste Zeile.
leftmargin
leftmargin legt den Abstand zur linken Papierkante in Punkten fest. Die Vorgabe ist von Drucker zu Drucker etwas unterschiedlich. Er betr�gt ungef�hr 20 Punkte.
topmargin
topmargin ist der Abstand zur oberen Kante des Papiers in Punkten. Die Vorgabe ist von Drucker zu Drucker etwas unterschiedlich. Er betr�gt ungef�hr 14 Punkt.
Dieser Parameter unterdr�ckt die Titelzeile und wird meistens in Kombination mit der Nutzung des Escape-Interpreters des Programms "pstext" verwendet. In diesen F�llen nutzen Sie wahrscheinlich ein "intelligentes" Programm, das seinen eigenen Seitentitel erzeugt.
Dieser Parameter dreht die Druckausgabe um 90 (Querformat, engl.
Landscape)
Dieser Parameter wird verwendet, um das Datum der letzten �nderung der Datei anstatt des aktuellen Datums in die erste Zeile auf jeder Seite zu drucken.
Dieser Parameter beendet den Escape-Interpreter des
"pstext"-Programms. Zeichen werden nicht auf Kontrollfunktionen (f�r Texthervorhebungen) �berpr�ft.
tabsize
tabsize legt die Entfernung zwischen den Positionen von zwei Tabulatoren in Einheiten der Breite des Buchstabens "M" fest. Die Vorgabe ist Acht, d.h. die Breite von acht "M"s ("MMMMMMMM") wird f�r jeden Tabulatorschritt verwendet.
printer
printer ist der Name des Druckers, auf dem die Datei ausgegeben werden soll. Wenn dieser Parameter ausgelassen wird, wird der erzeugte PostScript-Code am Terminal ("stdout") ausgegeben.
lpi
lpi definiert den gew�nschten Zeilenabstand in Einheiten der gew�hlten Schriftgr��e. Die Vorgabe ist Einzeilig.
NewPrepFile
Der Parameter
NewPrepFile kann gesetzt werden, um die programminterne "Prep"-Datei "pstext.ps" f�r eine weitere Bearbeitung und die Verwendung mit dem Parameter
-e in eine Datei zu schreiben.
"pstext" kann den Druckauftrag nach bestimmten Sequenzen durchsuchen, die mit dem "ESC"-Zeichen beginnen. Diese Sequenzen k�nnen zur Kontrolle von einfachen Hervorhebungseinstellungen wie beispielsweise Fettdruck, Unterstreichen und unterschiedliche Schriften verwendet werden. Dies ist besonders f�r Programme n�tzlich, die normalerweise an einen Matrixdrucker ausgeben. Mit solchen Programmen ist es h�ufig m�glich, Kontrollsequenzen einzugeben, um bestimmte Druckattribute festzulegen wie beispielsweise Fettdruck in einer Tabelle.
Eine Escape-Sequenz f�r das Programm "pstext" besteht aus drei Teilen: Der Erste ist das ESC-Zeichen selbst
(Hex 1B), dann folgt ein Befehl (eine Zahl zwischen Eins und Sechs) und zuletzt der Wert des Parameters in eckigen Klammern. Zum Beispiel:
Im Folgenden finden Sie eine Liste der unterst�tzten Escape-Sequenzen:
ESC 1 [1] Unterstreichen ein.
ESC 1 [0] Unterstreichen aus.
ESC 3 [Helvetica] W�hle eine neue Schrift, hier "Helvetica".
ESC 3 [Courier]
W�hle die vorgegebene Schrift. "Courier" ist die
vorgegebene Schrift.
ESC 4 [12.5] W�hle eine neue Schriftgr��e in Punkten, hier
12.5 Punkte.
ESC 5 [
gsave
newpath
50 50 moveto
80 80 lineto
closepath
stroke
grestore
]
Dieses Beispiel einer Escape-Sequenz zeigt, wie Sie Ihren eigenen PostScript-Code (z.B ein Warenzeichen) w�hrend des Druckvorganges mit integrieren k�nnen. Es ist wichtig, die aktuelle Position zu speichern und wiederherzustellen, deshalb sollte ein eigenes Programm immer mit dem Befehl "gsave" starten und mit dem Befehl "grestore" enden.
ESC 6 [2] Setze den Zeilenabstand (in diesem Beispiel auf die
zweifache H�he der verwendeten Schrift, d.h.
doppelzeilig).
12.4 Umlaute und Sonderzeichen
Das Programm "pstext" bietet auch die M�glichkeit, die PostScript-Kodierung (Zeichensatz-�bersetzung) der Druckerschrift zu ver�ndern. So ist beispielsweise der korrekte Ausdruck von l�nderspezifischen Buchstaben wie Umlauten m�glich. Die Standard-Zeichensatzkodierung in PostScript unterst�tzt nur wenige der verf�gbaren l�nderspezifischen Buchstaben. Das Programm "pstext" hingegen kodiert die Zuweisung solcher Buchstaben neu, indem es auf die "Prep"-Datei der PostScript-Sprache zugreift, die in EtherShare eingebaut ist. Diese Datei enth�lt zwei unterschiedliche, modifizierte Versionen des so genannten "Standard Encoding Vector" mit Namen "decEncoding
(f�r DEC Ultrix-Computer) bzw. "ibmEncoding" (f�r IBM-Computer). Keine dieser Kodierungstabellen enth�lt eine komplette Ausf�hrungen der entsprechenden Zeichens�tze. Sie wurden nur f�r die Unterst�tzung der deutschen Umlaute eingerichtet. Trotzdem k�nnen sie einfach erweitert werden, um weitere Sonderzeichen hinzuzuf�gen oder um komplett neue Kodierungen festzulegen. Bitte beachten Sie, dass zur Modifikation der Kodierungen einiges Wissen �ber die PostScript-Sprache erforderlich ist.
Um die Standard-"Prep"-Datei zu editieren, m�ssen Sie das Programm "pstext" mit dem Parameter
-d verwenden. Damit schreiben Sie die "Prep"-Inhalte in eine Datei, die dann �berarbeitet werden kann. F�r die weiteren Ausf�hrungen nehmen wir an, dass der Dateiname der editierbaren "Prep"-Datei "pstext.ps" lautet.
Die beiden alternativen Kodierungstabellen finden Sie am Anfang der Datei "pstext.ps". Bei beiden k�nnen Sie die Standardkodierungen kopieren und sie ver�ndern, um die ben�tigten Sonderzeichen hinzuzuf�gen. Im Folgenden sehen Sie die Kodierungstabelle, die f�r den DEC VT200-Zeichensatz bereitgestellt wird:
% reencode font for DEC VT200 font
/decEncoding StandardEncoding dup length array copy
Jede Zeile dieser Tabelle definiert ein einzelnes Zeichen neu. Die Dezimalzahl (z.B. 196) ist der Dezimalwert des Zeichens (d.h. "ASCII"-Wert) in dem Zeichensatz der Eingabedatei. Diesem folgt der PostScript-Name des Zeichens. In PostScript haben Zeichen Namen und keine Nummern. "/Adieresis" ist beispielsweise der PostScript Name f�r den Buchstaben "�".
In der den Kodierungstabellen folgenden Zeile ist festgelegt, welche der beiden Tabellen beim Druck verwendet wird. Die Tabelle "decEncoding" implementiert einen Zeichensatz nach der Norm ISO 8859-1 (DEC VT200) w�hrend "ibmEncoding" einen Zeichensatz implementiert, der dem erweiterten IBM PC ASCII-Code entspricht. Die folgende Zeile in "pstext.ps" w�hlt DEC-Kodierung aus:
% we use the DEC encoding by default
/theEncoding decEncoding def
Wenn Sie die IBM PC-Kodierung verwenden m�chten, �ndern Sie die obige Zeile wie folgt:
% we use the IBM encoding by default
/theEncoding ibmEncoding def
Sie k�nnen auch eine lokale Kopie von "pstext.ps" mit
einem neuen - individuelleren - Namen anlegen. Modifizieren Sie dann diese Datei und geben Sie ihren Namen mit Hilfe des Parameters
-e an, wenn Sie das Programm
"pstext" aufrufen, z.B.:
pstext -e myprep1.ps -P lw testfile
Mit diesem Befehl wird die Datei "testfile" unter Verwendung einer neuen PostScript-Definition gedruckt, die in der "Prep"-Datei "myprep1.ps" enthalten ist. Wenn Sie eine bestimmte Kodierungstabelle �fters verwenden, k�nnen Sie den Namen der "Prep"-Datei in die UNIX Umgebungsvariable "$PSTEXT_PREP" schreiben. Dann m�ssen Sie den Namen nicht - wie oben beschrieben - jedesmal in der Befehlszeile �ber den Parameter
-e angeben.