2011-07-19 23 views
5

当我将分层的SVG文件加载到Illustrator中时,所有图层都按照它们应有的方式工作,但它们始终位于新层之下; “层1”,我没有指定。在SVG中创建Illustrator顶层

如何创建一个SVG,让我的顶层最终成为Illustrator中的顶层?

+0

您是在Illustrator中创建SVG吗?因为,您可以在文本编辑器(它只是XML)中编辑SVG源来更改图层。 – allanberry

回答

6
  1. 在Illustrator中创建一个文件,该文件具有您想要的组织。
  2. 将Illustrator中的SVG另存为“a.svg”。
  3. 在Illustrator中重新打开SVG文件。
    嘿,我所有的图层都重新组合在一层!
  4. 修复组织。
  5. 将“Preserve Illustrator编辑功能”选项选为“b.svg”,从Illustrator中保存SVG。
  6. 在Illustrator中重新打开SVG文件。
    耶,图层被保留!
  7. Diff a.svgb.svg查看Illustrator正在保存的额外元数据。
  8. 将此数据模仿到您自己的文件中。
    当你意识到解决方案是一个巨大的专有斑点(<i:pgf>元素)时会哭泣。
  9. 放弃并决定它并不重要。
+0

我见过blob代码,但希望有更好的解决方案。问题是这些图层在我目前的项目中确实很重要,但我想我必须找到另一种方式。 “Preserve Illustrator ...”额外的代码是不值得的..谢谢! –

2

它的确确确实实对我很重要,所以我停止了哭泣,花了几个小时和脚本此解决方案:

  • 下载脚本:https://github.com/JcBernack/IllustratorScripts/archive/master.zip
  • 将“修复SVG图层”文件夹中标准的Illustrator脚本文件夹。这取决于您的安装和语言,我的地址是:
    C:\ Program Files \ Adob​​e \ Adob​​e Illustrator CS6(64位)\ Presets \ de_DE \ Skripten
  • 启动Illustrator并加载SVG,其中所有实际图层现在是新的“第1层”中的组。
  • 前往文件 - >脚本 - >修复SVG图层 - > FixSvgLayers
  • Yay!所有的组织现在都是实际的图层,“第1层”已经消失。更

的位信息:

  • “FixSvgLayers”转换所有组中“1层”背面内的层,它们移动到文档根并删除现在空的“第1层”。
  • “GroupsToLayers”将当前活动图层中的所有组转换为图层,而不移动或删除任何内容。
  • 这两个脚本都提示“递归深度”,它指定了多少级别的组组应该被转换为子子子级。
  • 第三个脚本(ConvertGroupsIntoLayers)只是另外两个需要的,从菜单调用它会打开一个提示符,但不会执行任何操作。

当打开SVG时,所有的实际图层都是新的“图层1”中的组。这些可以转换回来,没有歧义。子层是有问题的,因为没有信息来区分实际的组和应该是子层的组(如果有的话请告诉我!)。作为解决方法,我的脚本会提示递归深度,并将所有组转换为该深度内的(子)层。

在我的情况下,我有三层,其中之一只是更多子层的容器。为了取回我执行深度为0的FixSvgLayers的原始层结构,然后选择容器层并执行深度为0的“GroupsToLayers”。

如果所有三层都是“容器”层 - 执行FixSvgLayers深度为1将足以找回正确的结构。

如果您不希望任何组和每个组都转换为(子)层,请输入足够高的数作为递归深度。