Aufmacher

Wandlungsfähig

Postscript-Dateien mit Pstoedit konvertieren

01.05.2008
Postscript-Dateien tauchen meist am Ende der Dokumentenerzeugung auf und werden nur selten nachbearbeitet. Mit Pstoedit konvertieren Sie sie in andere, editierbare, Dateiformate.

Ohne Vorkenntnisse droht beim Programmnamen Pstoedit leicht ein Knoten in der Zunge. Eingeweihte wissen aber, dass Ps für Postscript steht, to im Englischen "zu" bedeutet und edit so viel wie "bearbeiten" heißt. Das kleine Kommandozeilentool wandelt also Postscript-Dateien in ein besser editierbares Format um. Hartgesottene wenden gerne ein, dass Postscript-Code auch ohne Konvertieren editierbar sei – wer das aber tatsächlich schon einmal probiert hat, der weiß, dass es gelinde ausgedrückt nicht sonderlich komfortabel ist.

Installation

Unter Ubuntu 7.10 holt sudo apt-get install pstoedit Version 3.44 von Pstoedit auf die Festplatte. Suse 10.3 bringt die selbe Version als Binärpaket mit, das Sie über YaST installieren. Auf der Projektwebseite steht bereits die Nachfolgeversion 3.45 als Quelltextarchiv und Windows-Binary zum Download bereit. Da Sie neben diversen Korrekturen durch das Kompilieren der Quellen auch Support für weitere Dateiformate erhalten, sollten Sie den kleinen Umweg in Kauf nehmen.

Ubuntu-Nutzern sei vorab aber geraten, das Binärpaket zu testen. Sofern es die gewünschten Ausgabeformate unterstützt, sollten Sie vom Selbstkompilieren absehen. Tests haben gezeigt, dass das Zusammenspiel zwischen Pstoedit 3.45 und Imagemagick auf dieser Plattform momentan nicht funktioniert.

Möchten Sie den Quellcode übersetzen, benötigen Sie die entsprechenden Werkzeuge. Unter Ubuntu installieren Sie mit sudo apt-get install build-essential libpng12-dev die passenden Pakete. Das zieht zusätzlich die Entwicklungspakete für GIF- und PNG-Dateien mit. Noch mehr Dateiformate versteht Pstoedit, wenn Sie es mit Imagemagick oder Graphicsmagic in Einklang bringen. Unter Ubuntu heben Sie dazu mit sudo apt-get install libmagick++9-dev weitere Pakete ins System.

Möchten Sie die Ausgabeformate der Plotutils [4] nutzen, wie zum Beispiel SVG, hilft unter Ubuntu ein sudo apt-get install libplot-dev weiter. Zum Erzeugen von EMF-Dateien brauchen Sie dagegen die Libemf. Die Quellen der Bibliothek finden Sie im Web [2]. Wie diese trotzdem unter Ubuntu nutzen, beschreibt der Kasten "Libemf unter Ubuntu 7.10 übersetzen". Das Kompilieren und Installieren des Tools Pstoedit nach /usr/local/ erfolgt dann auf der Kommandozeile via:

$ ./configure --with-libemf-include=/usr/local/include/libEMF/ && make && sudo make install

Libemf unter Ubuntu 7.10 übersetzen

Die aktuelle Version von Libemf stammt aus dem Jahr 2002 und arbeitet unter Ubuntu nicht problemlos mit dem System zusammen. Um dies zu beheben, editieren Sie den Quelltext der Library. Nach dem Entpacken des Archivs laden Sie die Datei libemf/libemf.h in den Editor. Unter der Zeile #define _LIBEMF_H 1 fügen Sie mit #include <iostream> und #include <function.h> zwei zusätzliche Zeilen ein und speichern die Datei wieder.

Danach editieren Sie die Datei libemf/libemf.cpp durch Suchen und Ersetzen. Alle Vorkommen von cerr und endl wandeln Sie in std::cerr beziehungsweise std::endl um. Ändern Sie außerdem die beiden Aufrufe von mem_fun1 in mem_fun um. Nach dem Speichern der Änderungen folgt dann das altbekannte Trio ./configure && make && sudo make install auf der Kommandozeile.

OpenSuse hatte im Test die Plotutils bereits installiert und bringt ein Libemf als fertiges Paket mit. Um Pstoedit dort analog mit:

$ ./configure --with-libemf-include=/usr/include/libEMF/ && make && sudo make install

zu installieren, benötigen Sie jedoch die Pakete gcc42-c++, ImageMagick-devel, libMagick++-devel, gd-devel und libEMF-devel auf Ihrem System. Da die Übersetzungsroutine nach GCC und G++ sucht, die Programme unter Suse aber anders heißen, benötigen Sie darüber hinaus zwei zusätzliche symbolische Links, die Sie mit folgenden Befehlen anlegen:

$ sudo ln -s /usr/bin/gcc-4.2 /usr/local/bin/gcc
$ sudo ln -s /usr/bin/g++-4.2 /usr/local/bin/g++

Ming-Support

Möchten Sie mit Pstoedit SWF-Dateien exportieren, benötigt das Tool außerdem Ming-Support [3]. Leider verträgt sich die derzeit aktuelle Version 0.4.0 Beta 5 nicht mit Pstoedit; Sie brauchen die aktuelle Entwicklungsversion. Nach einem sudo apt-get install cvs unter Ubuntu beziehungsweise dem Nachinstallieren von CVS unter Suse befördern Sie über die Befehle aus Listing 1 die Quellen auf die Festplatte.

Die zusätzlich benötigten Programme stellen Sie unter Ubuntu via sudo apt-get flex bison install libtool automake bereit. Unter OpenSuse heißen die benötigten Pakete genauso. Zusätzlich ist hier noch autoconf zu installieren. Des Weiteren benötigen Sie unter Ubuntu libfreetype6-dev und libgif-dev beziehungsweise unter OpenSuse freetype2-dev und giflib-devel.

Freetype ermöglicht den Einsatz von Truetype-Schriftarten in Ming. Automake, Flex, Bison und Libtool sind notwendig, um Ming mittels sh automake.sh && ./configure && make && sudo make install zu kompilieren und zu installieren.

Nach all der Vorarbeit müssen Sie unter Ubuntu noch die Datei configure im Quellverzeichnis von Pstoedit editieren. Aus der Zeile SPECIAL_CXXFLAGS="-DBUGGYGPP -pedantic -Wall -Wwrite-strings -Wcast-qual -Wpointer-arith" entfernen Sie den Parameter -pedantic. Anderenfalls nimmt es der Compiler zu genau. Bei OpenSuse war diese Modifikation nicht notwendig.

Durch die Recherchen zu diesem Artikel kam eine Diskussion zwischen den Entwicklern von Ming und von Pstoedit in Gang, bei der die Entwickler einige Interna von Ming besprachen, die sich seit der letzten Version von Pstoedit geändert hatten. Um Pstoedit mit der aktuellen CVS-Version von Ming zu kompilieren, kommentieren Sie in der Datei src/drvswf.cpp vorerst die beiden Zeilen mit delete d aus. Ändern Sie dazu die beiden Zeilen in // delete d.

Listing 1
$ cvs -d:pserver:anonymous@ming.cvs.sourceforge.net:/cvsroot/ming login
$ cvs -z3 -d:pserver:anonymous@ming.cvs.sourceforge.net:/cvsroot/ming co -P ming

Konvertierungsarbeiten

Wie der Name Pstoedit schon andeutet, liegt das Haupteinsatzgebiet des Kommandozeilentools im Konvertieren von Postscript-Dateien in besser editierbare Dateiformate. Da es auf Ghostscript zum Verarbeiten der Eingabedateien zugreift, dürfen die nur als reiner Postscript-Code, eingebetteter Postscript-Code (EPS), oder als PDF-Datei vorliegen.

Der Artikel setzt im Folgenden auf die im Ghostscript-Paket enthaltene Beispieldatei escher.ps (Abbildung 1) auf. Diese finden Sie bei OpenSuse unter /usr/share/ghostscript/8.15/examples im Dateisystem. Als Ubuntu-Nutzer installieren Sie mit sudo apt-get install ghostscript-doc die Datei /usr/share/doc/ghostscript/examples/escher.ps.gz nach. Da Pstoedit sich aber nicht auf gepackte Dateien versteht, entpacken Sie diese vor dem Bearbeiten mit sudo gunzip /usr/share/doc/ghostscript/examples/escher.ps.gz.

Abbildung 1: Ein Bild von M. C. Escher im Postscript-Format, das mit Ghostview auf die Platte wandert, dient als Beispiel für die Arbeit mit Pstoedit.

Die möglichen Ausgabeformate hängen von der jeweiligen Installation und den externen Bibliotheken ab. Ein pstoedit -help liefert eine Übersicht der Möglichkeiten. Am Ende der Ausgabe listet das Programm den Namen des Treibers, die unterstützten Dateiformate, eine Kurzbeschreibung sowie die jeweils verwendete Programmbibliothek auf.

Anhand der Dateiendung der Ausgabedatei erkennt Pstoedit im Regelfall den richtigen Treiber. Demnach erzeugt unter OpenSuse über den Befehl pstoedit escher.ps escher.fig der Treiber emf (aus der Bibliothek /usr/local/lib/pstoedit/libp2edrvwmf.so) das File escher.fig als Ausgabedatei (Abbildung 2).

Abbildung 2: Wenn nur ein Treiber für ein Ausgabeformat bereitsteht, kommt dieser automatisch zum Einsatz – so beispielsweise beim Konvertieren in EMF.

Stehen mehrere Treiber für das gleiche Ausgabeformat bereit, übergeben Sie den gewünschten Treiber beim Programmaufruf. Unter Ubuntu benutzt pstoedit -f xfig escher.ps escher.fig den Treiber xfig zum Konvertieren nach fig (Abbildung 3) und nicht einen der beiden anderen Alternativen fig oder plot-fig.

Die Wahl des richtigen Treibers hängt nicht zuletzt davon ab, welche weiteren Optionen Sie beim Konvertieren angeben wollen. Während der Treiber plot-fig keine weiteren Einstellmöglichkeiten bietet, setzen Sie beispielsweise bei fig und xfig via -metric als Parameter die Maßeinheit innerhalb der Ausgabedatei auf Zentimeter anstatt Zoll. Eine Übersicht möglicher Parameter pro Treiber liefert pstoedit -help.

Abbildung 3: Die ins FIG-Format umgewandelte Datei bearbeiten Sie beispielsweise mit dem Programm Xfig weiter.

Die manuelle Festlegen des Treibers lohnt sich auch dann, wenn ein Treiber mehrere Ausgabeformate anbietet. Der Treiber magick verbindet Pstoedit mit der Grafikbibliothek von Imagemagick. Das versetzt das Tool in die Lage, zumindest unter OpenSuse alle Formate zu erzeugen, auf die sich die Bibliothek versteht. Unter Ubuntu resultierten die Versuche, mit dem selbst kompilierten Pstoedit 3.45 aus Postscript-Dateien Pixelgrafiken zu machen, in Fehlermeldungen des Imagemagick-Treibers. Die Entwickler arbeiten aber an einer Lösung des Problems. Alternativ gelangen Sie auch mithilfe von Ghostscript und dessen Treibers via pstoedit -f gs:jpeg escher.ps escher.jpg an eine JPG-Datei des Kunstwerks.

Unter OpenSuse erwies sich der Treiber magick jedoch als unausgereift und fehlerhaft. Beim Start des Konvertierens öffnen sich zwei Imagemagick-Fenster. Prinzipiell genügt es, diese zu schließen, und das Programm arbeitet weiter. Praktisch bedeutet dies aber, dass Pstoedit nur dann mit dem Treiber richtig zusammenarbeitet, wenn ein X-Server läuft.

Des Weiteren interpretiert das Tool die Beispieldatei als mehrseitig. Am einfachsten umschiffen Sie dieses Problem mit einem kleinen Trick: Ein pstoedit -f magick escher.ps escher%d.jpg zerlegt aufgrund des eingefügten %d die mehrseitige Datei in Einzelbilder und erzeugt die beiden Dateien escher1.jpg und escher2.jpg im Dateisystem.

Erstere enthält das Motiv (Abbildung 4), die zweite bleibt leer. Diese dürfen Sie getrost löschen. Das Ausgabeformat des Treibers magick steuern Sie über die Dateierweiterung. Anstelle von escher%d.jpg könnten Sie auch escher%d.png oder escher%d.xpm als Zieldatei verwenden.

Abbildung 4: Das Konvertieren von Postscript in Pixelformate mit dem selbst kompilierten Treiber magick funktioniert zwar unter OpenSuse, nicht jedoch unter Ubuntu.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Konvertieren mit Pstoedit
    Postscript-Dateien sind keine Einbahnstraße: Mit Pstoedit konvertieren Sie Postscript- und PDF-Dateien in andere Bildformate, aber auch in Flash-Dateien oder Java-Applets.
  • Das PDF-Format
    Die meisten Computer-Besitzer stolpern früher oder später über PDF-Dokumente. Handbücher zu Software findet man heutzutage oft nur noch in diesem Format auf den zugehörigen CD-ROMs vor. In diesem Artikel zeigen wir, was PDF ist, welche Programme es rund um das "Portable Document Format" unter Linux gibt, und was auch Sie selbst alles damit anfangen können.
Kommentare

Infos zur Publikation

title_2014_10

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 4 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...
o2 surfstick software für ubuntu?
daniel soltek, 15.07.2014 18:27, 1 Antworten
hallo zusammen, habe mir einen o2 surfstick huawei bestellt und gerade festgestellt, das der nic...