4

inkscapeコマンド「simplifypath」を自動化したい。具体的には、svg-fileを入力として受け取り、図のすべてのパスに「simplify path」を適用し、新しい(小さい)svg-fileを保存するコマンドラインツールが必要です。これはinkscapeを使用して可能ですか?仕事をする無料のコマンドラインツール(私はLinuxを使用しています)はありますか?

4

3 に答える 3

6

アップデート:

質問/回答がかなり古いため、inkscapeコマンドラインが変更されました。

inkscape file.svg --batch-process --actions='EditSelectAll;SelectionSimplify;FileSave;FileClose'

OrenBen-KikiまたはPixの回答のコメントも参照してください。

ORIG:

可能である必要があります:

http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine.html

コマンドラインからinkscapeの関数(「動詞」と呼ばれる)を呼び出す方法を示します。すべての動詞のリストを取得するにはinkscape --verb-list、コマンドラインで呼び出します。あなたが探しているのはですSelectionSimplify

したがって、svgからすべてのIDをフィルタリングし、IDを使用してinkscapeを呼び出す小さなスクリプトを作成する必要があります。このようなもの(すべてのパスを最適化し、最後にinkscapeを終了します)

inkscape filename.svg --verb=EditSelectAll --verb=SelectionSimplify --verb=FileSave --verb=FileClose --verb=FileQuit
于 2011-09-07T13:06:25.797 に答える
4

Fabianの回答を拡張して、簡略化関数のしきい値を制御するには、目的のしきい値を含む最小限の設定ファイルを使用して、偽のホームディレクトリを作成する必要があることがわかりました。これが私がまとめた簡単なスクリプトです。

simple.sh:

#!/bin/bash
FILENAME=$1
THRESHOLD=$2
FAKEHOME=$(mktemp -d)
mkdir -p $FAKEHOME/.config/inkscape
cat > $FAKEHOME/.config/inkscape/preferences.xml <<EOF
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<inkscape
  xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
  xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
  version="1">
  <group
    id="options">
    <group
      id="simplifythreshold"
      value="${THRESHOLD}" />
  </group>
</inkscape>
EOF
# for Inkscape < 1.0
#HOME=$FAKEHOME inkscape $FILENAME --verb=EditSelectAll --verb=SelectionSimplify --verb=FileSave --verb=FileClose
# for Inkscape > 1.0
HOME=$FAKEHOME inkscape --with-gui --batch-process $FILENAME --verb='EditSelectAll;SelectionSimplify;FileSave'
#rm -rf $FAKEHOME
于 2016-06-04T08:32:34.960 に答える
-1

Inkscapeの代替

SVGOを使用するとはるかに良い結果が得られました(ファイルを2.7MBから350KBに減らしました)。

このオンラインサービスは、個々のファイルに使用できます:https ://jakearchibald.github.io/svgomg/

于 2017-09-23T05:44:36.360 に答える