有什么可以读取、导入或转换 CMYK SVG 的吗?

平面设计 svg 厘米 信息图形 颜色转换 印前
2022-01-13 10:11:11

简短的问题:我有 CMYK 颜色的 SVG 文件,根据SVG 规格指定。我想把它纳入一个设计程序——任何设计程序——以完成设计并准备打印。但是,我找不到任何真正关注 SVG 中 CMYK 颜色的东西(无论如何,不​​是 Illustrator 或 Inkscape)。

颜色很复杂,而且不容易转换:想象成百上千种动态生成的色调,作为品牌指南指定的 CMYK 的色调和混合,必须恰到好处。


背景:越来越普遍的事情是设计数据驱动的图形,这些图形是使用 javascript 和 SVG 从数据生成的,然后,使用 javascript 和 SVG 为 Web 发布一个变体,例如通过D3(或通过Raphael / D34Raphael获得 IE 支持) ,然后使用相同的代码生成用于打印的变体,该变体在 Illustrator(或 Inkscape)中完成并以 PDF 格式发送给打印机或布局人员。

这是纽约时报图形博客中的一个示例,通过此工作流程进行讨论。下面的图形是为网络编码的,然后将 SVG 从浏览器复制到 Illustrator,然后最终确定为打印图形(对他们来说,颜色很简单,所以他们没有我的问题,他们可以从 RGB 转换) :

在此处输入图像描述

SVG可以指定 CMYK 颜色(对于任何 SVG 编码器,语法如下所示:)<circle fill="#CD853F device-cmyk(0.11, 0.48, 0.83, 0.00)"/>但大多数设计软件都忽略了这一点。我在 Inkscape 社区中看到过关于支持 CMYK SVG 的讨论,以及涉及 Scribus(“开源 InDesign”)的一些复杂的事情,但我都没有设法让它们工作(我可能误解了 Scribus 之一-编辑: 这篇文章建议 Scribus 可以导入 CMYK SVG,如果它将它定义为 ICC 颜色配置文件......还不太明白,但它看起来很有希望)。


因此,我可以创建代码,在“网络模式”下生成 RGB SVG 可视化,在“打印模式”下生成 CMYK SVG,动态生成恰到好处的颜色。问题是,我对这些 CMYK SVG 文件无能为力——Illustrator 和 Inkscape 只是将它们视为黑色。

是否有任何图形程序、插件或方法可以获取具有 CMYK 形状的 SVG 图像并将其转换为设计软件将听 CMYK 颜色的任何矢量格式(... aipdfeps


这是一个简单的 SVG 文件,其中包含一些用 CMYK 指定颜色的文本。只需复制并粘贴并保存为 .svg 文件即可。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" 
     xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="176.18px"
     height="111.59px" viewBox="0 0 176.18 111.59" enable-background="new 0 0 176.18 111.59" xml:space="preserve">
<switch>
    <g>
        <text transform="matrix(1 0 0 1 31.5986 34.522)" fill="#dddddd device-cmyk(0.00, 0.00, 0.00, 0.60)" font-family="'MyriadPro-Regular'" font-size="12">TEST FILE...</text>
        <text transform="matrix(1 0 0 1 31.5986 59.3633)" fill="#dddddd device-cmyk(0.00, 0.85, 0.65, 0.00)" font-family="'MyriadPro-Regular'" font-size="12">This should be red</text>
        <text transform="matrix(1 0 0 1 31.5986 84.2041)" fill="#dddddd device-cmyk(0.90, 0.55, 0.00, 0.00)" font-family="'MyriadPro-Regular'" font-size="12">This should be blue</text>
    </g>
</switch>
</svg>
1个回答

这似乎有效:

  • 安装开源的 indesign 替代方案Scribus、Mac 和 Windows(在 sourceforge 上还有一个官方的便携式 Windows 版本,不需要安装)。警告:它的界面非常混乱......但是,它是免费的并且可以完成这项特殊的工作,我们只需要使用它来做一件简单的事情。
  • 打开它,File > Document Setup然后Colour Management设置 CMYK 相关的所有内容Generic CMYK profile- 应该是三个位置:颜色、实体形状和打印。
  • 确保 SVG 文件像这样指定它们的 CMYK 颜色:(fill="#ffffff icc-color(Generic-CMYK-profile, 1.00, 0.50, 0.00, 0.25)"其中 1.00 = 100%)

    • 如果 SVG 是在浏览器中生成的,浏览器不喜欢这样设置样式数据。首先尝试直接设置fill属性,如果这不起作用,请尝试使用自定义 SVG 属性,data-fill="#223fa3 icc-color..."然后在文本文件中查找-替换它。
    • 如果浏览器中的所有内容都显示为黑色,请不要担心,这表明填充数据存在但浏览器不理解它 - 正常。检查检查元素以确保。
    • 如果 SVG 是由 Raphael 生成的,请将其设置为element.node.setAttribute( 'fill', '#223fa3 icc-color...' );- Raphael 的.attr('fill','')似乎不适用于实际元素。.attr('fill')如果代码需要稍后阅读,也请更新。也一样stroke自然只能在SVG模式下工作......
  • 使用将 SVG 文件导入ScribusFile > Import > Get vector
  • 导出为 PDF(导出为 EPS 对我不起作用,它包含所有颜色)。确保在导出选项中将其设置为“CMYK”或“用于打印”,或者他们目前在颜色管理选项卡下使用它——默认值似乎是 RGB(“用于网络/屏幕”)。
  • 在 Illustrator 中打开该 PDF - 它应该作为 CMYK 文档打开,具有与原始 SVG 中指定的相同 CMYK 颜色。

结果: Illustrator 中的 CMYK 图形,与 SVG 匹配,具有 SVG 中指定的 CMYK 颜色。


警告: Scribus 的 SVG 支持非常复杂。特别是:

  • 基本上没有 SVG 文本支持,而且他们没有进一步支持 SVG 文本,只是争论这是谁的错期望它以糟糕的字距以错误的字体勾勒出所有太远的文本。
  • 它似乎对渐变和透明度感到困惑 - 尽管有时它会正确显示事物,尽管一路上抱怨。
  • PDF 中的所有内容都将包裹在一堆剪贴蒙版中。
  • Scribus 自己的界面确实令人困惑(截至 2013 年夏季) - 我建议在 Scribus 本身中进行绝对最小的修补。

有时您可能需要将原始 SVG 中的元素(例如文本)与 Scribus-borked 版本混合。如果有人知道比 Scribus 更好的方法,请分享!


如果您需要特定的颜色配置文件,您可以在 Scribus 中安装更多颜色配置文件并在您的 SVG 中指定它们,但我不确定细节。这篇先前链接的文章可能是一个不错的起点。