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

11

我正在使用 Inkscape 的命令行界面(使用参数 --without-gui-z)进行以下操作:

  1. 按 id (hanzipinyin)选择多个节点;
  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

输出错误

** (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): WARNING **: 指定的文件 test-union-cli.svg 无法打开(不存在或不是有效的SVG文件)

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

1个回答

11

简述

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

动词不带参数

#inkscape上询问得知,目前(Inkscape 0.48.3.1 r9886 (Jan 29 2013))不支持动词的参数:

动词不带参数 -> 你无法将以“-f”打开的文件保存为另一个名称,请先复制该文件(例如在脚本中),然后编辑并保存复制文件。

关于这个问题已经有一个已确认的错误(请参见:错误:提供可脚本化的保存文件方法)。

动词意味着GUI

目前(对于稳定版),动词始终需要打开GUI(即使不需要交互)

该错误已被确认,并添加到愿望清单中。允许在使用--verb选项时抑制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

希望 (v.049)

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

在这里阅读修订版本12388的提交日志https://code.launchpad.net/~7-eric/inkscape/effectscript - 这已经被合并到主干,AFAIU允许通过CLI运行boolops动词而无需GUI -> 很可能下一个主要版本的inkscape (0.49) 将具有更好的CLI支持。


1
使用0.91版本仍然无法工作。使用--verb和-z会导致Inkscape崩溃。https://bugs.launchpad.net/inkscape/+bug/843260 - lumbric

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接