Illustrator SVG导出无法正常工作(命名空间前缀inkscape未定义)

7

我是一个新手,对矢量编辑不太了解。我正在尝试从.AI文件中导出一个.SVG文件。 然而,在导出时,生成的文件中出现了以下错误:

Error on line 57 at column 354: Namespace prefix inkscape for cy on namedview is not defined 

请问有人能告诉我这是什么意思,以及如何解决它吗?

3个回答

8
请尝试使用文本编辑器打开您的SVG文件:您将看到一些带有inkscape命名空间的XML属性,例如:
inkscape:label="Some label"

这些属性可能来自原始的SVG文件(我猜你是从维基百科上获取的?)。你可以安全地删除它们所有——可能使用文本编辑器中的grep查找和替换:

find inkscape:label="[^"]*" replace with ""

那个find命令是伪代码吗?我从未见过那样的语法。 - Danny Armstrong
@DannyArmstrong,“grep查找和替换”不是打字错误。但它会让你的生活更美好。 - adam rowe

6
我希望他们最终能够解决这个问题。值得赞扬的是,这个问题的原因是Illustrator试图保留它不使用的信息,以便与其他程序兼容。
有几种解决方法。
  1. 使用InkScape另存为纯SVG格式。如果你事先知道这个问题,并且可以在将图像导入AI之前从InkScape中简单地保存一个普通的副本,那么这种方法效果很好。或者,如果您之前并不知道这个问题,也不介意重新开始并重新调整任何已更改自从从InkScape导入后变得“糟糕”的元素,则可以从InkScape中保存为简单的SVG格式,然后仅导入和重新调整那些有问题的元素。但是,如果您想要进行后期处理而不是修复AI文件(请参见Chip的答案),则最快且最少破坏性的选项可能是使用正则表达式(regex,详见下文)而不是使用InkScape。
  2. 导出为SVG格式。新版本的Illustrator现在允许您导出SVG格式,作为执行“保存副本/另存为”操作的替代方法。即使有一些最初来自InkScape的元素,这也会生成一个文件,Chrome和InkScape都能够打开,而两者都不能打开我使用“保存副本”创建的无效文件。警告:在我的非常小的比例尺(16像素高的图标)下,这种“网络优化”导出即使精度为5个小数点,在可见上也失去了信息/精度,但它确实摆脱了关键错误。
  3. [更新:现在可以保存副本/将其另存为SVG格式。我刚刚升级了两个程序,似乎InkScape现在能够打开Illustrator创建的无效文件,但Chrome和Illustrator仍然无法打开。我希望这意味着从Illustrator进行另存为,然后从InkScape进行纯文本保存是最快的方式,以获得精确而干净的SVG格式(尽管InkScape会警告Plain可能会丢失某些类型的数据)。]
  4. 修复SVG代码。Philippe的解决方案似乎是确实修复最新文件中当前损坏的最好方法,而且不会失去(太多?)精度/信息。在Notepad++中,我用以下正则表达式替换为空内容:inkscape:[^"]+"[^"]+"或更安全些,使用inkscape:(export-|connector-curvature)[^"]+"[^"]+" 。一旦你将副本另存为SVG格式并手动确定并修复问题,Illustrator就能够打开SVG文件,因此您可以将有问题的元素复制/粘贴回AI文件中,并解决问题。
注意:一种没有查看任何SVG代码就可以标识“错误”元素的手动方法是将其分解为艺术板,保存为SVG文件,然后查看哪些板无法打开。一旦您知道了这一点,您可以使用上述其中一种解决方法仅替换这些部件(因为在那些元素上你仍然会失去精度)。

2

Inkscape允许您将文件保存为普通格式,这样就可以去除Inkscape的参考内容。还有一种批处理方法是使用命令行(bash)。

for i in *.svg; do inkscape -z -f $i -l $i; done

这可以应用于从Illustrator创建的“另存为”SVG文件(Illustrator目前不支持导出SVG)。我还没有找到一种方法来从Illustrator文件中获取引用,一旦它们被放进去了。现在,我只能后处理所有由Illustrator创建的SVG文件。


将InkScape保存为纯文本对我很有用 - 谢谢!我会发布另一种似乎也有效的替代方法。 - Jon Coombs
Illustrator在处理SVG方面做得更好了。有时仍然会看到一些奇怪的东西。 - Chip
正如@Chip所提到的,最新版本的Illustrator似乎能够生成有效/标准的SVG。 - Jon Coombs

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