Kleines Shell Skript zum Umwandeln von SVGs in PDF Bilder
Samstag, 20.06.2009 um 14:10 UhrMoin liebe Lesergemeinde,
da ich ja, wie in anderen Einträgen schon erwähnt des Öfteren in LaTeX Dokumente verfasse, ist es auch manchmal nötig Grafiken einzubinden. Da ich normalerweise Grafiken mit Inkscape im Vektorformat SVG erstelle, ist es nötig diese Dateien zu konvertieren. LaTeX kann leider SVGs nicht direkt einbinden. Bei meinen Recherchen im Internet habe ich auch nicht wirklich Bestrebungen gefunden, dieses Leck zu stopfen – also wer von euch in LaTeX voll den Durchblick hat, kann ja mal die Unterstützung dafür Programmieren
Damit die Eigenschaften eines Vektorformats – also die gute Skalierbarkeit der Grafiken – erhalten bleiben, wandle ich die Dateien immer in eps oder pdf um. Allerdings wird es sehr anstrengend, wenn man eine Kleinigkeit im Bild geändert oder sehr viele Bilder hat, diese immer wieder von Hand umzuwandeln. Deshalb habe ich mir ein kleines Shell Skript geschrieben, dass immer im Ordner meiner SVG Bilder liegt und dort aufgerufen werden kann.
Benutzung:
Man gehe in einer Konsole in den Ordner mit den Bildern und dem Skript. Das Skript muss die Rechte zum Ausführen haben. Ist dies noch nicht der Fall, dann den folgenden Befehl ausführen:
jazz@jazz:~$ chmod +x SVG2PDF
Jetzt hat man die Möglichkeit das Skript ohne Parameter aufzurufen. Dann werden alle im Ordner befindlichen SVGs in eine PDF konvertiert. Dabei richtet sich die Größe der PDF nach der Seiteneinstellung der SVG.
jazz@jazz:~$ ./SVG2PDF
Die zweite Variante ist der Aufruf mit Parametern. Als Parameter kann man eine beliebig lange Liste von SVG Dateien angeben. Dies ist sinnvoll, wenn man nicht alle SVGs in PDF umwandeln will, wenn man zum Beispiel nur ein oder zwei der im Ordner befindlichen SVGs verändert/hinzugefügt hat.
jazz@jazz:~$ ./SVG2PDF eine.svg eineandere.svg
So jetzt hier das Skript zum Runterladen (Rechtsklick → Ziel Speichern unter):
Und hier nochmal ausgeschrieben:
#!/bin/bash
if [ $# -lt 1 ]
then
for f in *.svg; do
e=$(basename $f svg)eps;
echo "Converting $f to a pdf image!"
inkscape --export-embed-fonts --export-text-to-path -f $f -E $e;
epstopdf $e
rm $e
done
else
for f in $*; do
if [ -f $f -a ${f#*.} = "svg" ]
then
e=$(basename $f svg)eps;
echo "Converting $f to a pdf image!"
inkscape --export-embed-fonts --export-text-to-path -f $f -E $e;
epstopdf $e
rm $e
else
echo "File $f is not a SVG!"
fi
done
fi
EDIT: Für das Skript muss epstopdf (unter Ubuntu in texlive-extra-utils) installiert sein. Ist es nicht vorhanden, führt dies ebenfalls zu “command not found”-Fehlern.

Hallo,
schönes Script. Allerdings hat die neue inkscape version die option –export-embed-fonts nicht mehr und folgender Fehler erscheint:
** (inkscape:3704): WARNING **: Invalid option –export-embed-fonts
http://wiki.inkscape.org/wiki/index.php/ReleaseNotes047
Also einfach die option rausnehmen.
Gruß Astgabel
Ist schon länger her, aber ich hatte das probiert und das Ergebnis war nicht zufriedenstellend (Qualitätsmäßig) und außerdem ist die Box die das Bild umrahmt nicht richtig gesetzt.
Warum exportierst du es nicht direkt nach pdf und machst den Umweg über eps?
folgendes Zeigt mir man inkscape an
-P, –export-ps=FILENAME
-E, –export-eps=FILENAME
-A, –export-pdf=FILENAME
Für das Skript muss epstopdf (unter Ubuntu in texlive-extra-utils) installiert sein. Ist es nicht vorhanden, führt dies ebenfalls zu “command not found”-Fehlern.
Hey,
hast du dem Skript ausführungsrechte gegeben:
siehe oben: chmod +x SVG2PDF
bist du in der Konsole im Ordner mit den SVGs und der PDF?
Wenn ja dann musst du es ausführen mit: ./SVG2PDF
also mit . und / das ist wichtig
Grüße
Jazz
Hallo, bin gerade über Planet Ubuntu auf dieses Skript aufmerksam geworden. Hab es mir auch sofort heruntergeladen und in einem Ordner mit Inkscape SVG Dateien gespeichert. Wenn ich allerdings über den Terminal es ausführen möchte, bekomme ich zurück “command not found”. Was mache ich den falsch? Gruß Sebastian