我有一个从 Powerpoint 创建的 SVG 文件,现在我想在 Inkscape 中进行编辑。在 Inkscape 中打开并保存该文件时,不进行任何修改,文件大小从 120kB 变为 170kB(我将其保存为纯 SVG,而不是 Inkscape SVG)。
据我所知,这是因为 Inkscape 生成的 SVG 打印得很漂亮,因此有很多无用的空白。有没有办法在没有漂亮打印的情况下保存 SVG 文件?
例如,原始文件的这一部分:
<linearGradient x1="272" y1="618" x2="272" y2="643" gradientUnits="userSpaceOnUse" spreadMethod="reflect" id="fill25"><stop offset="0" stop-color="#D2D2D2"/><stop offset="0.5" stop-color="#C8C8C8"/><stop offset="1" stop-color="#C0C0C0"/></linearGradient>
保存为
<linearGradient
id="fill1"
spreadMethod="reflect"
gradientUnits="userSpaceOnUse"
y2="159"
x2="272"
y1="134"
x1="272">
<stop
id="stop6277"
stop-color="#D2D2D2"
offset="0" />
<stop
id="stop6279"
stop-color="#C8C8C8"
offset="0.5" />
<stop
id="stop6281"
stop-color="#C0C0C0"
offset="1" />
</linearGradient>
需要注意的是,您可能需要查看SVG 输出首选项下的XML 格式化选项:
前任。XML 格式
这些选项应该可以通过Edit → Preferences → Input/Output → SVG output → XML Formatting获得。请注意,编辑 → 首选项也可通过Ctrl+ Shift+获得P(如所示)。
标记
Inline attributes
(以上)的选项应保留前:例如:
注意事项
使用 Inkscape 编辑的文件可能仍会应用一些小的开销,因为 Inkscape 可能以与原始格式略有不同的格式保存文件(即使使用 "plain"
.svg
)。关于前导空格等,“整个”
.svg
标签可能会缩进以进行漂亮的打印,例如:如果我没记错的话,调整
Indent, spaces
目前似乎对.svg
已经具有漂亮打印效果的文件没有任何影响。标签(即似乎此选项仅适用于新文件)。如果要确保删除前导空格等,您可能应该使用文本编辑器或脚本手动删除它们。
您可以使用Notepad++等文本编辑器打开
.svg
文件,然后选择编辑 → 空白操作 → 修剪前导空格以删除前导空格。您还可以使用Edit → Line Operations → Remove Empty Lines删除任何空白行。.svg
您可以编写一个脚本来对给定目录中的一个或多个文件执行上述操作。例如,Python 3中的一个简短示例:前任。reduce_svg_files.py
请注意,上述两个选项都通过保留行尾来保留格式。正如您在评论中指出的那样,如果不担心行尾,您可以在 Notepad++ 中执行(大致)相同的两个步骤,其中一个操作为Edit → Blank Operations → Remove Unnecessary Blank and EOL(将任何
.svg
文件内容转换为带有空格的单个文本字符串)。如果您还想删除标签之间的空格,可以使用上面的 Python 脚本并更改:
只是:
但是请注意,
.svg
如果每行不包含“完整”<tag>
元素(即确保原始.svg
文件内容看起来像您想要的内容,而不是原始问题中不受欢迎的“元素列表”)。