Ho trovato un modo per farlo in questa domanda: Inkscape - Centra disegno su pagina tramite riga di comando / terminale
Con "foo.svg" come immagine da modificare:
inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit foo.svg
Per modificare tutte le immagini svg nella directory corrente:
inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileClose *.svg
Ma questo secondo comando apre un sacco di finestre, che causeranno l'arresto anomalo del tuo computer se stai modificando troppe immagini. Solo per Linux , questo comando funzionerà meglio:
for img in $(ls *.svg) ; do inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit $img ; done
Per il comando precedente, se uno qualsiasi dei file è un collegamento simbolico, Inkscape modificherà il file di destinazione a cui punta il collegamento simbolico. Se non vuoi che Inkscape esegua questa operazione, puoi filtrare eventuali collegamenti simbolici con questo comando:
for img in $(ls *.svg) ; do if [[ $(readlink $img) == "" ]] ; then inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit $img ; fi ; done
Mentre ci sono, potrei anche pubblicare lo script bash che ho creato per questo:
#!/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
L'ho chiamato inkscape-center
ed eseguito in questo modo:
inkscape-center <file-or-directory>
Prende tutti gli argomenti che vuoi, quindi puoi fare qualcosa del genere:
inkscape-center 1st.svg 2nd.svg 3rd.svg 4th.svg
Fai attenzione : se specifichi una directory anziché un file, modificherà ogni file svg in quella directory.