5

当我将分层 SVG 文件加载到 Illustrator 中时,所有图层都可以正常工作,但它们始终位于新图层下;我没有指定的“第 1 层”。

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

4

2 回答 2

8
  1. 在 Illustrator 中创建一个具有您想要的组织的文件。
  2. 将 Illustrator 中的 SVG 保存为“a.svg”。
  3. 在 Illustrator 中重新打开 SVG 文件。
    嘿,我所有的图层都重新组合在第 1 层下!
  4. 整顿组织。
  5. 从 Illustrator 中保存 SVG,并将“保留 Illustrator 编辑功能”选项选中为“b.svg”。
  6. 在 Illustrator 中重新打开 SVG 文件。
    是的,图层被保留了!
  7. 比较a.svgb.svg查看 Illustrator 正在保存哪些额外的元数据。
  8. 在您自己的文件中模仿这些数据。
    当您意识到解决方案是一个巨大的专有 blob(<i:pgf>元素)时,您会哭泣。
  9. 放弃并决定这并不重要。
于 2011-07-21T21:47:07.197 回答
2

这对我来说确实很重要,所以我停止了哭泣,花了几个小时编写了这个解决方案:

  • 下载脚本:https ://github.com/JcBernack/IllustratorScripts/archive/master.zip
  • 将“Fix SVG Layers”文件夹放在标准 Illustrator 脚本文件夹中。这取决于您的安装和语言,我的位于:
    C:\Program Files\Adobe\Adobe Illustrator CS6 (64 Bit)\Presets\de_DE\Skripten
  • 启动 Illustrator 并加载 SVG,其中所有实际图层现在都是新的“图层 1”中的组。
  • 转到文件->脚本->修复 SVG 图层->FixSvgLayers
  • 耶!所有的组现在都是实际的层,“第 1 层”永远消失了。

更多信息:

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

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

就我而言,我有三层,其中一层只是更多子层的容器。为了恢复原始层结构,我执行了深度为 0 的 FixSvgLayers,然后选择了容器层并执行了深度为 0 的“GroupsToLayers”。

如果所有三个层都是“容器”层,那么执行深度为 1 的 FixSvgLayers 就足以恢复正确的结构。

如果您不想要任何组并且每个组都应转换为(子)层,只需输入足够高的数字作为递归深度。

于 2014-10-21T02:53:38.687 回答