InkscapeにはCLIがあったらしい。これを利用するとSVGから様々なファイル形式、特にPNGへの変換を自動化しやすくなる。最初PhantomJSとcanvas使ってやろうかとか錯乱してた。後出しだけどSVG Advent Calendar 2014の12日目の記事ということにしておこう。

例えばin.svgを幅256ピクセルのPNGファイルとしてout.pngに変換したいとする。Inkscapeの実行ファイルのディレクトリーへパスが通っているとすると、以下のようなオプションで実行すれば変換される。

$ inkscape --without-gui --export-width=256 --file=in.svg --export-png=out.png

--without-guiでGUIの起動を無効にし、--export-widthで幅を(高さはアスペクト比を維持してくれる)、--fileで変換元のSVGファイルを、そして--export-pngで変換先のPNGファイル名を指定する。複数ファイルの変換などについては無理なようだが、実用上はあまり問題ないようにも思える。Inkscape v0.91-pre.3できちんと変換できることを確認した。

Windows版ではinkscape.exeにはCLIがないが、同じ場所にあるinkscape.comがコマンド・プロンプト用の実行ファイルになっているので、パスさえ通せばこのままでちゃんと使える。


自動化目的だったのでsvg2pngという名前のGruntタスクを書いてみたりもした(使い始めた)。もっと雑に一対多で変換できるような設定を書けると良さそう。