Bu soruda bunu yapmanın bir yolunu buldum: Inkscape - Merkez Çizgiyi Komut Satırı / Terminal Üzerinden Sayfaya Çizme
Düzenlenecek resim olarak "foo.svg" ile:
inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit foo.svg
Geçerli dizindeki tüm svg görüntülerini düzenlemek için:
inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileClose *.svg
Ancak bu ikinci komut, çok fazla görüntü düzenlerseniz bilgisayarınızın çökmesine neden olacak bir ton pencere açar. For Linux sadece bu komut daha iyi çalışır:
for img in $(ls *.svg) ; do inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit $img ; done
Yukarıdaki komut için, dosyalardan herhangi biri sembolik ise Inkscape, sembolik bağın işaret ettiği hedef dosyayı düzenler. Inkscape'in bunu yapmasını istemiyorsanız, bu komutla sembol bağlantılarını filtreleyebilirsiniz:
for img in $(ls *.svg) ; do if [[ $(readlink $img) == "" ]] ; then inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit $img ; fi ; done
Ben varken, bunun için yaptığım bash betiğini de gönderebilirim:
#!/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
Onu aradım inkscape-center
ve şu şekilde çalıştırın:
inkscape-center <file-or-directory>
İstediğiniz kadar argüman alır, böylece böyle bir şey yapabilirsiniz:
inkscape-center 1st.svg 2nd.svg 3rd.svg 4th.svg
Dikkatli olun - Dosya yerine bir dizin belirtirseniz, o dizindeki her svg dosyasını düzenler.