SVG ファイルに含まれるストロークをパスに変換(アウトライン化)することをコマンドラインから行い、自動化したかった。
Inkscape CLI
そこで、フリーソフトウェアのドローツールである Inkscape を利用する。
GUI からはメニューの「パス」→「ストロークをパスに変換」からアウトライン化が可能である。
さて、この Inkscape 、コマンドラインインターフェースを持つ。
このCLIに --select オプションによってオブジェクトを指定し --verb オプションでそれに対する操作を行うことが可能であるらしい。
例えば、参考サイトの例を引用すると、
inkscape --select=path616 --verb ObjectFlipVertically --verb FileSave \ --verb FileClose violin_key_flipped.svg
(参考 1.)
このコマンドは、ファイル violin_key_flipped.svg を開き、 path616 オブジェクトを「縦方向に反転して」「ファイルを保存し」「ウィンドウを閉じる」ということができるようだ。
verb については --verb-list オプションで一覧を出力できる。
inkscape --verb-list
今回は、
EditSelectAll: 全オブジェクトまたは全ノードを選択 (Ctrl+A) StrokeToPath: 選択オブジェクトのストロークをパスに変換 (Ctrl+Alt+C)
が関係ありそう。
SVGファイルに含まれる全てのオブジェクトのストロークをアウトライン化する
それでは、標題のことを実行するコマンドは、次の様になる。
inkscape --verb EditSelectAll --verb StrokeToPath \ --verb FileSave --verb FileClose filename.svg
SVGファイル filename.svg を開き「全てのオブジェクトを選択」し、その「選択したストロークをアウトライン化」して、「ファイルに保存(上書き保存)」し、「ウィンドウを閉じる」という手順である。
GUI いらないので --without-gui を指定したかったのだけど、そうした場合、
WARNING: ignoring verb EditSelectAll - GUI required for this verb. WARNING: ignoring verb StrokeToPath - GUI required for this verb. WARNING: ignoring verb FileSave - GUI required for this verb.
って出たので、GUIは必須のようだ。これだとウィンドウが現れて消えることになる。