|
|
|
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.
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.
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".
Ab sofort wartet die PDF-Ausgabe in FinalWriter unter dem Menü-Abschnitt "User" auf ihren Einsatz.
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.
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.
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.
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)"`
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-***.lha
[2] im Aminet unter /util/rexx/Convert_to_PDF.lha
Uwe Pannecke <Uwe.Pannecke@t-online.de>