在PDF中将RGB转换为CMYK的脚本(或其他方式)?

15

是否有可能编写一种 Adobe Illustrator 或其他工具的脚本,能够读取多个 PDF 文件的内容并将所有 RGB 颜色转换为 CMYK 呢?

如果可能的话,请问有哪些步骤需要注意,或者在哪里可以找到更多相关信息呢?

4个回答

25

这个答案不适用于Illustrator,而是针对'其他一些工具',即Ghostscript(下载 gs871w32.exegs871w64.exe)。

Ghostscript允许您“重新加工”PDF文件(无需中间转换为PostScript,避免了令人生畏的“再热炸”弯路)。尝试运行以下命令:

gswin32c.exe ^
    -o c:/path/to/output-cmyk.pdf ^
    -sDEVICE=pdfwrite ^
    -dUseCIEColor ^
    -sProcessColorModel=DeviceCMYK ^
    -sColorConversionStrategy=CMYK ^
    -sColorConversionStrategyForImages=CMYK ^
     input-rgb.pdf

如果你能再等几周,Ghostscript 9.00 将会发布。这个新版本将首次支持基于 LCMS 的颜色管理,并使用 ICC 配置文件。

更新: 我更新了上面的命令,因为我忘记加入选项来转换图片。


更新2

如果颜色转换不起作用,并出现类似于 "无法将颜色空间转换为灰度,将策略还原为 LeaveColorUnchanged" 的消息,则...

  1. 你的 Ghostscript 可能是 9.x 版本系列的 新er 发布版本,而且
  2. 你的源 PDF 可能使用了嵌入的 ICC 颜色配置文件

在这种情况下,将-dOverrideICC 添加到命令行中,看看是否按预期更改了结果。


我尝试了一下,似乎解决了问题。我对颜色转换不是很熟悉,请耐心等待。是否可以指定每个RGB应该转换成哪个CMYK?还是只能通过最佳猜测来完成?或者这个应用程序采用了更准确/科学的方法,而我显然不知道? - DaveDev
@DaveDev:所以……看起来这个方法行得通了?但你仍然不认为有理由“接受”这个答案吗?——你所要求的“映射”,在颜色管理世界中被称为“ICC配置文件”。关于Ghostscript中的ICC配置文件支持,请参见我的回答的最后一段;-) - Kurt Pfeifle
我看到了这样的提示信息:“检测到使用-dUseCIEColor选项!自Ghostscript 9.11版本发布以来,我们建议您不要在pdfwrite/ps2write设备系列中设置-dUseCIEColor选项。” - krlmlr
@krlmlr:感谢您的评论。原始答案是在8年前编写的,与Ghostscript 8.71版本相关。 - Kurt Pfeifle

2
在Linux Mint / Ubuntu上,我尝试过使用ICC配置文件(来自这里),使用的是Ghostscript 9.18版本,该版本不支持"-dUseCIEColor"参数。
gs -o output.pdf -sDEVICE=pdfwrite -r2400 -dOverrideICC=true -sOutputICCProfile=/usr/share/color/icc/Fogra27L.icm -sColorConversionStrategy=CMYK -dProcessColorModel=/DeviceCMYK -dRenderIntent=3 -dDeviceGrayToK=true input.pdf

它“似乎”有效(-r2400很有用,是用于分辨率的,可更改或删除)。

也许添加“-sDefaultRGBProfile=/usr/share/color/icc/colord/sRGB.icc”对于输入会更好...我不知道(也不知道在哪里)。也许有专家能解释使用的最佳方式。

谢谢。问候,


1

我已经在Illustrator CC 2017中编写并测试了以下脚本:

var folder = Folder.selectDialog();
if (folder) {
    var files = folder.getFiles("*.pdf")
    for (var i = 0; i < files.length; i++) {
        app.open(files[i]);
        var doc = app.activeDocument;
        app.executeMenuCommand('doc-color-cmyk');
        doc.close(SaveOptions.SAVECHANGES);
    }
}

这个脚本会要求选择一个文件夹,所以请选择包含PDF文件的文件夹。它将把所选文件夹中的所有PDF文件转换为CMYK。

1

不幸的是,它将所有图像转换为位图,使文档变得非常大。对我来说有点难以接受。 - teedyay
你测试过我对这个问题的答案了吗? - Charu Rajput

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