如何使用Inkscape CLI保存SVG文件?

Édo*_*pez 9 command-line svg inkscape

我在cli no(--without-gui-z)中使用Inkscape :

  1. 按id(hanzi,pinyin)选择多个节点;
  2. 建立他们的联盟;
  3. 另存为新文件(test-union-cli.svg).

命令

所以我用这个命令:

inkscape -z -f ./?-x45A0.svg \
    --select=hanzi --select=pinyin \
    --verb SelectionUnion --verb FileSaveCopyAs \
    --verb=FileClose test-union-cli.svg
Run Code Online (Sandbox Code Playgroud)

输出错误

**(inkscape:27462):CRITICAL*:Inkscape :: XML :: Document sp_repr_read_file(const gchar*,const gchar*):断言`Inkscape :: IO :: file_test(filename,G_FILE_TEST_EXISTS)'失败

**(inkscape:27462):CRITICAL*:Inkscape :: XML :: Document sp_repr_read_file(const gchar*,const gchar*):断言`Inkscape :: IO :: file_test(filename,G_FILE_TEST_EXISTS)'失败

**(inkscape:27462):警告**:无法打开指定的文档test-union-cli.svg(不存在或不是有效的SVG文件)

该文件test-union-cli.svg不应该存在.那么我在这里做错了什么?

Édo*_*pez 10

TL;博士

  1. 您无法保存到与打开文件不同的文件.所以编辑副本;
  2. 动词需要GUI,不要使用-z--without-gui.

动词不带参数

当被问到#inkscape时,current(Inkscape 0.48.3.1 r9886 (Jan 29 2013))不支持动词的参数:

动词不带参数 - >你不能保存用'-f'打开的文件,用不同的名称先复制文件(例如在脚本中),然后编辑并保存复制的文件

有关此主题的错误已确认(请参阅:错误:提供可保存文件的脚本化方法).

动词暗示GUI

当前的动词(有稳定的)总是需要打开GUI(即使不需要交互)

错误已确认允许在使用--verb选项并添加到whishlist 时禁止GUI(-z).

临时解决方案

较新版本的Inkscape可以解决这个"问题",目前你可以通过这样做来解决它

cp ?-x45A0.svg test-union-cli.svg && inkscape -g -f ./test-union-cli.svg \
    --select=hanzi --select=pinyin --verb=SelectionUnion \
    --verb=FileSave --verb=FileClose
Run Code Online (Sandbox Code Playgroud)

希望(v.049)

改进正在进行中lp:~7-eric/inkscape/effectscript:

在这里阅读修订版12388的提交日志 https://code.launchpad.net/~7-eric/inkscape/effectscript - 最近合并到trunk中,AFAIU允许通过cli运行boolops动词而不用GUI - >可能是下一个主要版本的inkscape(0.49)将有更好的cli支持