J'ai trouvé un moyen de le faire dans cette question: Inkscape - Centrer le dessin sur la page via la ligne de commande / le terminal
Avec "foo.svg" comme image à éditer:
inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit foo.svg
Pour éditer toutes les images svg dans le répertoire courant:
inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileClose *.svg
Mais cette deuxième commande ouvre une tonne de fenêtres, ce qui fera planter votre ordinateur si vous modifiez trop d'images. Pour Linux uniquement , cette commande fonctionnera mieux:
for img in $(ls *.svg) ; do inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit $img ; done
Pour la commande ci-dessus, si l'un des fichiers est un lien symbolique, Inkscape modifiera le fichier cible vers lequel le lien symbolique pointe. Si vous ne voulez pas qu'Inkscape le fasse, vous pouvez filtrer les liens symboliques avec cette commande:
for img in $(ls *.svg) ; do if [[ $(readlink $img) == "" ]] ; then inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit $img ; fi ; done
Pendant que j'y suis, je pourrais aussi bien poster le script bash que j'ai fait pour cela:
#!/bin/bash
# inkscape-center <file-or-directory>...
_analyse() {
if [ -d "${1}" ] ; then
_centerAll "${1}" ;
else
_center "${1}" ;
fi
}
_centerAll() {
cd "${1}" ;
for img in $(ls "*.svg") ; do
_filterSyms "${img}" ;
done
}
_filterSyms() {
if [[ $(readlink "${1}") == "" ]] ; then
_center "${1}"
fi
}
_center() {
inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit "${1}"
}
for arg ; do
_analyse "${arg}" ;
done
Je l'ai appelé inkscape-center
et l' ai exécuté comme ceci:
inkscape-center <file-or-directory>
Cela prend autant d'arguments que vous le souhaitez, vous pouvez donc faire quelque chose comme ceci:
inkscape-center 1st.svg 2nd.svg 3rd.svg 4th.svg
Soyez prudent - Si vous spécifiez un répertoire au lieu d'un fichier, il éditera chaque fichier svg dans ce répertoire.