在 Adob​​e Illustrator 中编辑 SVG 时如何保留元素 ID?

在 Adob​​e Illustrator 中编辑 SVG 时如何保留元素 ID?

我正在研究一个流程,我们将在某些元素上生成带有 ID 的 SVG。我希望能够在 Adob​​e Illustrator 中编辑 SVG。但是,我发现当我在 Illustrator 中编辑文件时,ID 全部更改了。

Illustrator 可以保留我的 ID 吗?

答案1

几年来,我一直在尝试将 Illustrator 与 svg 结合使用,但效果参差不齐。通常如果你以最宽松的格式(SVG 1.1)保存,它会保留 ID;但它确实喜欢将各种 svg 元素重写成它自己的思考方式。我强烈建议不要使用 Illustrator 来编辑想要干净、仔细的标记的 svg 文件。您可以改用 Inkscape。

答案2

所以我知道这个问题很久以前就被问过了。由于 Inkscape 在 Mac 上通过 x11 运行速度非常慢,我决定在这里发布我的解决方案,希望它能帮助到其他人。

如果您的 Mac 上安装了 Python,则可以使用此脚本在 Illustrator 中打开 svg 之前对其进行修改。然后在完成编辑后,基本上执行相反的操作以将新属性发布回 id 字段。有点奇怪,但 Illustrator 的性能让我比使用 Inkscape 更好 -

from bs4 import BeautifulSoup

svg = open('myawesome.svg', 'r').read()

soup = BeautifulSoup(svg)

paths = soup.findAll('path')

for p in paths:
    p['inkscape:temp_id'] = p['id']

    html = p.prettify("utf-8")
    with open("output.svg", "a") as file:
        file.write(html)

这里的技巧是在文本编辑器中打开原始 SVG,并用此脚本的输出替换路径。在 Illustrator 中完成后,复制此 Python 脚本并将“inkscape:temp_id”复制回 p['id'](与第一次相反),然后就完成了。

希望这能对某些人有所帮助。我今天浪费了 4 个小时来弄清楚如何在 Illustrator 中为我正在做的项目保留元素 ID,这是我能想到的最好的办法。祝你好运!

相关内容