Explications ici : http://shaarli.plop.me/?0wJ_Pg
Les scripts sont dans la catégorie #NautilusCajaScripts
Inkscape est un logiciel de dessin vectoriel extrêmement puissant et simple qui remplace avantageusement (selon moi) Illustrator.
On peut l'invoquer en ligne de commande pour effectuer certaines tâches, comme par exemple l'export vers une image ou l'enregistrement dans divers formats.
Pour ce qui est de l'export, il ne connait que le PNG, qu'à cela ne tienne, on peut se servir de imagemagick pour les autres formats d'image.
A noter que transformer un fichier SVG directement en un autre format avec imagemagick ne donnera pas du tout le même résultat. En effet, certaines subtilités du format ne sont pas forcément détectées par imagemagick.
Il est donc préférable de se servir de Inkscape pour travailler avec le format SVG.
Par ailleurs la transformation en PDF est bien plus intéressante avec Inkscape qu'avec imagemagick, en effet ce dernier rasterise l'image (convertir le vectoriel en bitmap) avant d'en faire un PDF, contrairement à Inkscape qui génère un PDF avec les éléments séparés, textes, images, éléments vectoriels... Le poids du fichier, ainsi que la qualité à l'impression peuvent s'en ressentir.
J'ai besoin le plus souvent de 3 formats de destination : PNG, JPG et PDF.
Voici le script pour convertir un SVG en PNG : inkscape_to_png
#!/bin/bash
scriptname=`basename $0`
# Determine wave type to convert to based on the name of the script
newext=`echo $scriptname | sed 's/inkscape.to.\(.\+\)/.\1/'`
logfile=`mktemp -t $script_name.XXXXXX`
tail -f $logfile | zenity --text-info --title="Converting sound to $newext" &
for svg in "$@"; do
oldext=$(echo $svg|sed 's/.*\.\(.\+\)/\1/')
if [ $oldext != "svg" ]
then
echo "Not a svg file" >> $logfile
continue
fi
# Determine target svg name
target=$(echo $svg|sed 's/\(.*\)\..\+/\1/')$newext
if [ -f "$target" ]
then
echo "File exists" >> $logfile
continue
fi
datefile=`date -r "$svg" +%Y%m%d%H%M`
echo "$svg -> $target" >> $logfile
inkscape -f "$svg" -d 90 -e "$target"
touch -t $datefile "$target"
done
echo done >> $logfile
rm -f $logfile
Voici le script pour convertir un SVG en JPEG : inkscape_to_jpg
#!/bin/bash
scriptname=`basename $0`
# Determine wave type to convert to based on the name of the script
newext=`echo $scriptname | sed 's/inkscape.to.\(.\+\)/.\1/'`
logfile=`mktemp -t $script_name.XXXXXX`
tail -f $logfile | zenity --text-info --title="Converting sound to $newext" &
for svg in "$@"; do
oldext=$(echo $svg|sed 's/.*\.\(.\+\)/\1/')
if [ $oldext != "svg" && $oldext != "pdf" ]
then
echo "Not a svg file" >> $logfile
continue
fi
# Determine target svg name
target=dac
target2=$(echo $svg|sed 's/\(.*\)\..\+/\1/')$newext
if [ -f "$target" ]
then
echo "File $target exists" >> $logfile
continue
fi
if [ -f "$target2" ]
then
echo "File $target2 exists" >> $logfile
continue
fi
datefile=`date -r "$svg" +%Y%m%d%H%M`
echo "$svg -> $target" >> $logfile
inkscape -f "$svg" -d 300 -e "$target"
#~ touch -t $datefile "$target"
touch "$target"
echo "$target -> $target2" >> $logfile
convert "$target" -quality 92 -density 90 -resample 150x150 -resize 850x710 "$target2"
#~ touch -t $datefile "$target2"
touch "$target2"
rm "$target"
done
echo done >> $logfile
rm -f $logfile
Voici le script pour convertir un SVG en PDF : inkscape_to_pdf
#!/bin/bash
scriptname=`basename $0`
# Determine wave type to convert to based on the name of the script
newext=`echo $scriptname | sed 's/inkscape.to.\(.\+\)/.\1/'`
logfile=`mktemp -t $script_name.XXXXXX`
tail -f $logfile | zenity --text-info --title="Converting sound to $newext" &
for svg in "$@"; do
oldext=$(echo $svg|sed 's/.*\.\(.\+\)/\1/')
if [ $oldext != "svg" ]
then
echo "Not a svg file" >> $logfile
continue
fi
# Determine target svg name
target=$(echo $svg|sed 's/\(.*\)\..\+/\1/')$newext
if [ -f "$target" ]
then
echo "File exists" >> $logfile
continue
fi
datefile=`date -r "$svg" +%Y%m%d%H%M`
echo "$svg -> $target" >> $logfile
inkscape -f "$svg" -d 90 -A "$target"
touch -t $datefile "$target"
done
echo done >> $logfile
rm -f $logfile