4

根据这个问题:

在 iPad 上显示 PDF 文档 - 颜色问题

由于颜色不是 RGB,某些 PDF 无法在 iOS 设备上正确显示。还提到可以使用 ghostscript 自动将 PDF 从 CMYK 转换为 RGB。任何人都知道实际命令的样子吗?

4

4 回答 4

5

从 Postscript 文件生成 PDF 时,我们使用 Ghostscript 将 CMYK 转换为 RGB。它也应该适用于 PDF 到 PDF 的转换。

使用以下命令行:

gs -sDEVICE=pdfwrite -dBATCH -dNOPAUSE -dCompatibilityLevel=1.4 -dColorConversionStrategy=/sRGB -dProcessColorModel=/DeviceRGB -dUseCIEColor=true -sOutputFile=output.pdf input.ps
于 2011-12-14T07:14:14.603 回答
2

我通过将 -dCompatibilityLevel 从 v1.4 降级到 v1.3 解决了同样的问题

更新:v1.3 将 PDF 中的所有内容仅转换为一个对象,这意味着最终用户将无法选择文本,也无法在其查看器中提取图像。

为了继续使用v1.4,我在ghostscript上发现了一个有助于保持颜色准确性的技巧,即禁用PDF透明度,它们转换不准确,因为RGB没有alpha通道,所以信息丢失了.

因此,如果您使用:-dNOTRANSPARENCY,您仍然可以使用:-dCompatibilityLevel=1.4,它会起作用。

确切的命令:

gs -sDEVICE=pdfwrite -dBATCH -dNOPAUSE -dCompatibilityLevel=1.4 -dNOTRANSPARENCY -dColorConversionStrategy=/sRGB -dProcessColorModel=/DeviceRGB -dColorConversionStrategyForImages=/DeviceRGB -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -dUseCIEColor=true -sOutputFile=output.pdf input.pdf

当我用 PHP 处理它时,我写了一个简单的类:

/**
 * Convert color profiles - PDF to PDF
 * Class Conversor
 */
class Conversor
{
    /**
     * Convert CMYK to RGB
     *
     * @param $input
     * @param $output
     * @return string
     */
    public static function gsCmykToRgb($input, $output)
    {
        $gsScript = ('gs -sDEVICE=pdfwrite \
                         -dBATCH -dNOPAUSE \
                         -dCompatibilityLevel=1.4 \
                         -dNOTRANSPARENCY \
                         -dColorConversionStrategy=/sRGB \
                         -dProcessColorModel=/DeviceRGB \
                         -dColorConversionStrategyForImages=/DeviceRGB \
                         -dTextAlphaBits=4 \
                         -dGraphicsAlphaBits=4 \
                         -dUseCIEColor=true \
                         -sOutputFile='."$output".' '."$input");
        exec($gsScript);

        return realpath($output);
    }
}

你可以在这里找到关于 ghostscript 的一切: http ://www.ghostscript.com/doc/9.05/Use.htm

于 2013-11-14T12:26:36.267 回答
2

在 mac 上,您可以使用sips命令。例如,

sips --matchTo '/System/Library/ColorSync/Profiles/Generic RGB Profile.icc' CMYKinput.pdf --out RGBoutput.pdf

RGB pdf 可以以同样的方式转换为 CMYK(将 'Generic RGB Profile.icc' 更改为 'Generic CMYK Profile.icc')。

在 OSX 10.12 上测试。

于 2017-11-09T19:36:31.097 回答
1

据我所知,ghostscript只能转换光栅图像中色彩空间

粉红色

http://podofo.sourceforge.net/

能够转换矢量对象

您可以尝试通过这种方式将(对于黑白非彩色页面)、cmyk 转换为灰度

podofocolor grayscale input.pdf output.pdf

如果二进制文件不在存储库中,不幸的是您需要自己构建。但是,我只是尝试将pdf转换为灰度

gs -sOutputFile=output.pdf -sDEVICE=pdfwrite -sColorConversionStrategy=Gray -dProcessColorModel=/DeviceGray -dCompatibilityLevel=1.4 input.pdf < /dev/null

并且 prepress preflight check 说它变成了grayscale,所以,也许我说gs只能转换 pdf 中光栅内容的色彩空间错误的(因为我的 pdf 是矢量化的)

于 2011-12-12T19:46:42.007 回答