Workshops / Hintergrundberichte / Buchvorstellungen
---------------------------------------------------

1. Workshop: AFPL Ghostscript 6.50 - Teil 4 (von Uwe Pannecke)

Crash-Kurs durch die Ghostscript-Untiefen

Mit ein wenig Verzögerung in dieser Septemberausgabe nun der versprochene 
vierte Teil des Ghostscript-Workshops. Diesmal soll neben der harmonischen
Zusammenarbeit von Ghostscript [1] und Final Writer die Ausgabe von PS- und 
PDF-Dateien in weiteren Formaten sowie die Erhöhung des Bedienkomforts im 
Mittelpunkt unserer Betrachtungen stehen.


1. Teamwork

Im letzten Teil haben wir uns Ghostscripts interessante Fähigkeit, 
PostScript-Dateien in (zunehmend) betriebssystemunabhängig verarbeitbare 
PDF-Dokumente umwandeln zu können, kennen gelernt.
Anwender der Textverarbeitung Final Writer werden sich, obwohl das Programm 
in der letzten Version bereits fünf Jahre alt ist, über dessen 
Leistungsfähigkeit im täglichen Einsatz nach wie vor freuen. Doch leider 
findet sich unter den vielfältigen Funktionen kein PDF-Export erstellter 
Dokumente. Da aber Final Writer in der Lage ist, seine Dokumente als 
Postscript-Dateien auszugeben, ist das PDF-Format nur einen (Ghostscript-) 
Schritt entfernt.
Im Unterschied zu einigen Firmen auf dem Amiga-Markt demonstrieren die 
beiden Programme eindrucksvoll, dass man gemeinsam stark sein kann. Zwar 
könnt ihr auch per Hand jede exportierte PS-Datei über Ghostscript ins PDF-
Format wandeln, doch wesentlich komfortabler ist ein Automatismus, der 
einem diese Arbeit abnimmt. Dank ARexx und dem Skript "Convert to PDF" [2] 
des nur mit seinem Synonym auftretenden "ELAL" ist auch dieser Wunsch
mit wenig Aufwand erfüllbar.
Kopiert das ARexx-Skript nach "FinalWriter_D:FWMacros". Da das ARexx-File 
für Ghostscript 5.x geschrieben wurde, solltet ihr vor dem eigentlichen 
Start zuvor mit Hilfe eines beliebigen Editors im Skript den Stapelspeicher 
von 40000 auf den für Ghostscript 6.50 notwendigen Wert von 200000 erhöhen. 

Screenshot:
Screenshot

Um den Komfort auf die Spitze zu treiben, binden wir nun dieses Skript in 
das FinalWriter-Menü ein. Wählt dazu in FinalWriter in der Menü-Zeile 
"User/Andere/Voreinsteller..." und klickt im aufpoppenden Fenster unter 
"Aktionen" auf "Neu", anschließend füllt ihr das Feld unter "Name des 
Menüpunkts" mit einem gewünschten Eintrag, wie etwa sinnigerweise "Convert 
to PDF", und stellt den "Befehl/Typ" auf "ARexx-Script". Mit einem weiteren 
Klick auf "Auswählen..." öffnet sich ein Datei-Requester, der den Inhalt 
des "FWMacros"-Verzeichnisses auflistet. Nachdem das Skript "Convert to 
PDF" ausgewählt wurde, beendet ihr die Konfiguration mit einem beherzten 
Klick auf "Sichern".

Screenshot:
Screenshot

Ab sofort wartet die PDF-Ausgabe in FinalWriter unter dem Menü-Abschnitt 
"User" auf ihren Einsatz.

Screenshot:
Screenshot

Vom eigentlichen Zusammenspiel FinalWriters und Ghostscripts bemerkt der 
Anwender nicht sonderlich viel: Ghostscript erledigt seine Konvertierung im 
Hintergrund. Lediglich für die Ausgabe der fertigen PDF-Datei will das 
Skript von euch einen Dokumentnamen und das Zielverzeichnis.

Screenshot:
Screenshot

Bei den Tests konnten typische FinalWriter-Dokumente mit unterschiedlichen 
Schriftschnitten und reichlich eingebundenem Bildmaterial problemlos 
konvertiert werden. Bei der Anzeige der PDF-Dateien stellte sich heraus, 
dass "APDF" offensichtlich keinerlei Gefallen an diesen Dokumenten fand und 
grundsätzlich jeden Anzeigeversuch mit einem Absturz quittierte. Schade, 
zeigte sich "APDF" doch bisher recht robust beim Umgang mit dem portablen 
Dokumentenformat. 
Ghostscript selbst hatte keine Probleme mit der PDF-Präsentation, ebenso 
wenig wie der "Acrobat Reader", "GsView" und "KGhostView" unter Microsoft 
Windows und Linux. 


2. Rasterformate

Ghostscript bringt im Schlepptau Treiber für einige Grafikformate mit und 
erlaubt so die Konvertierung von PS- und PDF-Dokumenten in diese Formate 
und die Ausgabe der Grafikdateien auf ein gewünschtes Gerät. Zu den 
unterstützten Formaten zählen u.a. TIFF, BMP, PBM, PCX, PNG und JPEG.
Wollt Ihr etwa eine im Verzeichnis "Work:" vorhandene 25-seitige Datei 
"test.pdf" Seite für Seite in eines der unterstützten Rasterformate wandeln 
und nach "RAM:" ausgeben, lautet die passende Syntax nach dem Setzen des 
Stapelspeichers auf den Wert 200000:

gs -dNOPAUSE -dFIXEDMEDIA -sDEVICE=Bildformat -rWertXxWertY -sOutputFile=RAM:Seite-0%d.Dateiendung Work:Test.pdf

Mit "-dNOPAUSE" überreden wir Ghostscript, bei der Konvertierung alle 
Seiten in einem Rutsch ohne explizite Bestätigung durch den Anwender 
abzuarbeiten. Der Schalter "-dFIXEMEDIA" veranlasst das Programm, nach der 
Initialisierung die Seitengröße zu fixieren. Wenn es erforderlich sein 
sollte, wird Ghostscript Seiten entsprechend drehen und/oder skalieren. 
Der Schalter "sDEVICE=" bekommt das entsprechende Bildformat zugewiesen, 
mit "-rWertXxWertY" legen wir die gewünschte DPI-Auflösung der Ausgabedatei 
fest. Wird keine spezielle Auflösung für die Bildformate angegeben, nutzt 
Ghostscript die vordefinierten. Bei TIFF wäre es die FAX-Auflösung 204 x 
196 DPI, bei JPEG 72 x 72 DPI. Die Ausgabedatei wird durch das 
"-sOutputFile"-Argument "RAM:Seite-%02d.Dateiendung", Seite für Seite ab 
Ziffer 01 zweistellig durchnummeriert, mit der gewünschten Dateiendung in 
der RAM-Disk abgelegt.
Soll also unser "Test.pdf"-Dokument im JPEG-Format in der Auslösung 200x200 
DPI nach "RAM:" ausgegeben und die Seitenzahl fortlaufend auf zwei Stellen 
angegeben werden, geben wir Ghostscript in der Shell die entsprechenden 
Anweisungen:

gs -dNOPAUSE -dFIXEDMEDIA -sDEVICE=jpeg -r200x200 -sOutputFile=RAM:Seite-%02d.jpg Work:Test.pdf

Je nach Leistungsfähigkeit der CPU im Amiga liegt nach mehr oder weniger 
kurzer Zeit das Ergebnis in der RAM-Disk vor.

Screenshot:
Screenshot


3. Mehr Komfort

Nach wie vor tummeln wir uns in der Shell, um Ghostscript unsere Wünsche zu 
übermitteln. Das klappt nach einer Eingewöhnungsphase auch ganz gut. Doch 
ein wenig mehr Komfort wird wohl niemand verschmähen. Und mit den zwei 
nachfolgend beschriebenen Befehlserweiterungen sollte auch eine komplette 
Maussteuerung, etwa per selbsterstelltem Icon, nur noch wenige 
Befehlszeilen entfernt sein.

Dateiauswahl-Requester

Bei allen bisherigen Anweisungen haben wir dem Programm die zu 
bearbeitenden Dateien in der Kommandozeile übergeben. Deutlich bequemer 
wäre eine Auswahl über einen Requester. Das haben sich offensichtlich auch 
die Ghostscript-Programmierer gedacht und eine solche Option in das 
Programm implementiert. Wenn wir aus dem obigen Beispiel die Angabe 
"Work:Test.pdf" durch "`RequestFile`" ersetzen, können wir zukünftig die 
gewünschten Dateien per Maus auswählen. Außerdem sorgt der Zusatz
"PATTERN "(#?.ps|#?.pdf)"" für mehr Übersicht, da er alle Dateien, die 
nicht auf ".ps" oder ".pdf" enden, im Requester-Fenster ausblendet.

Ende und Aus

Eine zweite Besonderheit hat bisher unnötig viel zusätzliche Arbeit 
erfordert und eine mögliche Automatisierung erschwert: Ghostscript meldete 
sich nach getaner Arbeit im Interpreter-Modus in der Shell zurück und 
musste durch "quit" bzw. "CTRL + C" beendet werden. Übergeben wir dem 
Programm in der Kommandozeile "-dBATCH", wird es sich nach Erledigung 
seiner Aufgabe selbständig terminieren. Alternativ können wir auch an das 
Ende der Zeile ein "-c quit" setzen.
Abschließend die entsprechend erweiterte Shell-Eingabe des obigen 
Beispiels:

gs -dBATCH -dNOPAUSE -dFIXEDMEDIA -sDEVICE=jpeg -r200x200 -sOutputFile=RAM:Seite-%02d.jpg `RequestFile PATTERN "(#?.ps|#?.pdf)"`


4. Schluss für heute

So, das soll es für diesen Monat gewesen sein. In einer der nächsten AMIGA-
aktuell-Ausgaben wird Ghostscripts Funktionalität beim Ausdruck intensiver 
beleuchtet. Den Abschluss soll eine Steuerung des Programms über Icons und 
eine (von euch erweiterbare) Mini-GUI bilden. 
Bis dann.


[1] im Aminet unter /gfx/conv/GS650-xxx.lha
[2] im Aminet unter /util/rexx/Convert_to_PDF.lha

Uwe Pannecke <Uwe.Pannecke@t-online.de>