2011-09-04 55 views
3

我想自动化inkscape命令“简化路径”。具体来说,我想要一个命令行工具,它将svg文件作为输入,将“简化路径”应用于图中的所有路径,并保存一个新的(较小的)svg文件。这可能使用inkscape?有没有一个免费的命令行工具(我使用的是Linux)来完成这项工作?为svg文件自动化“简化路径”(使用inkscape)

回答

4

应该是可能的:

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

示出了如何调用Inkscape中的功能(称为 “动词”)的命令行。要在命令行上获得所有动词列表,请拨打inkscape --verb-list。你在找什么是SelectionSimplify

因此,您必须编写一个小脚本,用于过滤svg中的每个ID并使用ID调用inkscape。喜欢的东西:

inkscape filename.svg --select=pathID --verb=SelectionSimplify --verb=FileSave --verb=FileClose 

我不知道你是否能链,你必须为每个SVG

+0

问问我的答案【如何节省使用Inkscape CLI SVG文件?(http://stackoverflow.com/a/18630916/802365)所谓被称为CLI模式的动词需要GUI,不要使用'-z'或'--without-gui'。 –

1

Fabian的回答扩展只是一次打电话Inkscape中,控制阈值所有ID通话的简化功能,我发现我需要制作一个包含我想要的阈值的最小偏好文件的假主目录。这是一个简单的脚本,我只是把它放在一起。

simplify.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 
HOME=$FAKEHOME inkscape $FILENAME --verb=EditSelectAll --verb=SelectionSimplify --verb=FileSave --verb=FileClose 
#rm -rf $FAKEHOME