2011-09-04 353 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