如何将PDF从CMYK转换为RGB,以便在iPad上显示?

时间:2011-12-12 14:18:14

标签: ipad pdf rgb ghostscript cmyk

根据这个问题:

Displaying PDF documents on iPad - Color Problems

由于颜色不是RGB,因此某些PDF无法在iOS设备上显示。还提到使用ghostscript将PDF从CMYK转换为RGB可以自动化。有人知道实际命令的外观吗?

4 个答案:

答案 0 :(得分:5)

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

使用followind命令行:

gs -sDEVICE=pdfwrite -dBATCH -dNOPAUSE -dCompatibilityLevel=1.4 -dColorConversionStrategy=/sRGB -dProcessColorModel=/DeviceRGB -dUseCIEColor=true -sOutputFile=output.pdf input.ps

答案 1 :(得分:1)

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

<强> podofocolor

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

和印前预检检查表明它已转为灰度,所以,也许我错了说 gs 只能 转换光栅的色彩空间pdf中的内容(因为我的pdf是矢量化的)

答案 2 :(得分:1)

我通过将-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

答案 3 :(得分:0)

在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上测试。