我有 PlantUML 生成的 SVG 图像,其中有一些在画布之外绘图的部分。这使得使用此类图像变得困难,我需要将绘图裁剪为画布大小。无论如何,当我用脚本生成 UML 图时,在那里执行裁剪也会非常有效。
到目前为止,我已经尝试了两件事:a) 使用 Inkscape 调整画布大小以进行绘图
inkscape --verb=FitCanvasToDrawing --verb=FileSave --verb=FileClose *.svg
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我需要将绘图裁剪为画布大小,并且此操作似乎不可用。
b) 使用 rsvg-convert 调整大小
rsvg-convert image.svg -w 1870 -h 1195 -f svg -o image.svg
Run Code Online (Sandbox Code Playgroud)
这确实裁剪到所需的大小,但图像大小增加了约 10 倍,因为现在有一些二进制图像嵌入到 SVG 中。这对我来说是不可接受的。
我使用一个名为 Inkscape 的绘图程序,它具有 GUI 和命令行界面。在命令行上使用时,它有大量选项只能通过用户特定的配置文件进行控制,该文件被硬编码为:
$HOME/.config/inkscape/preferences.xml
Run Code Online (Sandbox Code Playgroud)
这个配置文件总是包含最近在 GUI 中使用的选项,这在我编写脚本时可能是错误的。
为了解决这个问题,我让我的脚本保存了一份配置文件的副本,用标准配置文件替换它,运行程序,然后将保存的配置文件复制回来。
这工作正常,但不是很干净。例如,如果脚本的两个实例同时运行,它将无法正常工作。
在 Unix 上,是否有一种更简洁的方法来执行伪造程序的任务,以便它从我想要的某个地方获取其配置文件,而不是从程序中硬编码的路径名?也许涉及链接的东西,或者像BSD监狱之类的东西?
我试图在我的 Ubuntu 14 中安装inkscape,但它不存在。当我安装我的 ubuntu 时说已经安装了,但是当我输入终端 $inkscape 时,它说需要安装。
这是混乱。
见下面的文件
我该如何解决这个问题?
我使用的一些软件使用 inkscape 将图像从一种格式转换为另一种格式,作为中间步骤。这意味着他们将图像写入该/tmp
文件夹,并尝试在这些图像上使用 inkscape 来获取他们需要的图像格式。但是,在我的系统上,inkscape 不喜欢该/tmp
文件夹。
当尝试使用 inkscape 打开/编辑目录中的 svg 文件时/tmp
,例如,inkscape /tmp/test.svg
它会抛出错误/警告
** (inkscape:6528): WARNING **: Can't open file: test.svg (doesn't exist)
Run Code Online (Sandbox Code Playgroud)
该文件存在,我可以使用 Budgie 的默认查看器打开它。
例如,在主文件夹中执行类似操作时,inkscape ~/test.svg
测试文件打开得很好。Inkscape 本身在调用文件夹inkscape
中的某个位置时运行/tmp
,它只是无法使用该文件夹中的文件。
我正在运行 Solus 4,并使用sudo snap install inkscape
.