HELIOS EtherShare 2.6 Benutzerhandbuch


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".
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:
pstext -P lw .profile
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:
ls -l | pstext -P lw
In folgendem Beispiel wird ein Eintrag aus dem UNIX-Handbuch gedruckt:
nroff -man /usr/man/man1/ls.1 | pstext -P lw
12.2 Optionen
Die Befehlszeilen-Parameter von "pstext" bedeuten:
-f
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.
-s
size
size
ist die Größe der Schrift in Punkt. Der vorgegebene Wert ist 10 Punkt. Ein Punkt sind 1/72 Zoll.
-e
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".
-h
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.
-L
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.
-T
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.
-o
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.
-l
Dieser Parameter dreht die Druckausgabe um 90 (Querformat, engl. Landscape)
-m
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.
-n
Dieser Parameter beendet den Escape-Interpreter des
"pstext"-Programms. Zeichen werden nicht auf Kontrollfunktionen (für Texthervorhebungen) überprüft.
-t
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.
-P
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.
-c
lpi
lpi
definiert den gewünschten Zeilenabstand in Einheiten der gewählten Schriftgröße. Die Vorgabe ist Einzeilig.
-d
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.
12.3 Escape-Interpreter
"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:
ESC 4 [10]
oder in Hex:
1B 34 5B 31 30 5D
Gültige
Escape-
Sequenzen
Im Folgenden finden Sie eine Liste der unterstützten Escape-Sequenzen:
ESC 1 [1]
Unterstreichen ein.
ESC 1 [0]
Unterstreichen aus.
ESC 2 [1]
Fettdruck ein.
ESC 2 [0]
Fettdruck 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
dup 196 /Adieresis put
dup 228 /adieresis put
dup 220 /Udieresis put
dup 252 /udieresis put
dup 214 /Odieresis put
dup 246 /odieresis put
dup 223 /germandbls put
def
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.

© 2002 HELIOS Software GmbH