【问题标题】:Ghostscript: Convert CMYK Color to solid color with specific nameGhostscript:将 CMYK 颜色转换为具有特定名称的纯色
【发布时间】:2019-12-31 07:50:31
【问题描述】:

是否可以在 pdf 生成过程中转换特定的 cmyk 颜色?

在我的例子中,我为客户模拟了颜色,例如价值 C15 M30 Y70 K20 的金色。对于使用真正金箔的打印机,必须更换此颜色。那里的 CMYK 值必须更改为 C0 M100 Y0 K0 并且颜色必须是纯色而不是印刷色,最后但并非最不重要的是它必须获得特定的颜色名称。在这种情况下是“金箔”。

那么幽灵脚本可以查找特定的 CMYK 值并替换它们吗?

任何提示都会很有帮助

【问题讨论】:

    标签: ghostscript color-conversion spotcolor


    【解决方案1】:

    不,你不能让 Ghostscript 像那样改变颜色值。

    执行此操作的正确方法是创建具有 /Separation 颜色空间的 PostScript 程序,并将替代定义为具有特定 CMYK 值的 CMYK 空间,以便在不支持墨水时使用。

    当打印机支持命名墨水“金箔”时,它将使用金色墨水(或您的情况下的箔)打印,当不支持命名墨水时,打印机将使用备用空间和颜色值。这让您的客户可以在 CMYK 打印机上看到近似的结果,但您的打印机将能够产生真正的黄金输出。

    【讨论】:

    • Hey KenS 感谢您的快速回复,非常感谢。我的情况是,我们正在构建一个基于 Web 的产品配置器,客户可以在其中选择金色作为颜色。我只能为该颜色定义 rgb 或 cmyk 值。您知道生成具有正确输出的 pdf 的最佳方法是什么吗?
    • 嗯,如果创建应用程序不允许您创建专色,我认为您(直言不讳)不走运。从您的问题来看,打印机(不出所料)似乎需要带有 /goldfoil 颜色名称的 /Separation 墨水。唯一的方法是使用 /Separation 或 /DeviceN 颜色。如果您只能指定 RGB 或 CMYK,则您无法执行此操作,这意味着您无法(显然)创建具有所需墨水名称的 PDF 文件。可能我误解了您的网络应用程序。我不知道有任何应用程序会找到 CMYK 值并用命名空间替换它们。
    • 您可以使用诸如 MuPDF 之类的 PDF 解压缩/修复工具来解压缩 PDF,然后编写一些代码为备用空间添加具有正确定义的命名墨水 (/goldfoil),然后继续通过文件查找“c”运算符的用法并检查它是否使用您想要的特定值。然后,您可以将其替换为选择命名的颜色空间和值。之后,您可以再次通过 MuPDF 运行文件以修复外部参照表(更改文件将使其失效)并重新压缩 PDF 文件。
    • 嘿!好的,我想我必须询问设计工具的开发人员是否支持专色。恐怕不是。所以 MuPDF 可能是一个解决方案。由于我对这种东西不熟悉:我们想将打印文件自动处理到打印机,这个更正过程在服务器上会非常耗时吗?所有 PDF 都只是一页...
    • 我想这取决于你认为什么是耗时的。这也很难说,因为处理的冗长部分将是搜索内容流以查找特定的 CMYK 值。这取决于流有多长,而不是多少页。哦,顺便说一句,如果金箔颜色用于除简单线条之外的其他东西,比如图像,可能还有一些渐变等等,这种方法根本不起作用。如果您仍然要联系他们,开发人员可能更容易添加专色支持。值得一问。
    【解决方案2】:

    我和开发者谈过了。生成的文件是一个 svg,将被转换为 PDF。我不确定这是否是正确的地方,但也许你可以给我一些意见。到目前为止,我发现 SVG 支持 ICC 配置文件。所以我想链接一个 ICC 配置文件并给颜色一个特殊的名称,如下所示:

     <color-profile name=„ISOcoated_v2_eci" xlink:href="http://swatches.example.com/ISOcoated_v2_eci.icc"/>
         <circle fill=„#9C9475 icc-color(ISOcoated_v2_eci, Goldfolie"/>
    

    还缺少正确的 cmyk 值,所以我可以这样组合吗?

    <color-profile name=„ISOcoated_v2_eci" xlink:href="http://swatches.example.com/ISOcoated_v2_eci.icc"/>
         <circle fill=„#9C9475 device-cmyk(0.00, 1.00, 0.00, 0.00) icc-color(ISOcoated_v2_eci, Goldfolie "/>
    

    还是这样?

    <color-profile name=„ISOcoated_v2_eci" xlink:href="http://swatches.example.com/ISOcoated_v2_eci.icc"/>
         <circle fill=„#9C9475 icc-color(ISOcoated_v2_eci,0.00, 1.00, 0.00, 0.00) icc-color(ISOcoated_v2_eci, Goldfolie "/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-06
      • 2013-01-28
      • 2011-01-26
      • 2018-11-14
      • 1970-01-01
      • 2020-01-23
      • 1970-01-01
      • 2014-05-31
      相关资源
      最近更新 更多