Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将PDF从CMYK转换为RGB,以便在iPad上显示?_Ipad_Pdf_Rgb_Ghostscript_Cmyk - Fatal编程技术网

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

如何将PDF从CMYK转换为RGB,以便在iPad上显示?,ipad,pdf,rgb,ghostscript,cmyk,Ipad,Pdf,Rgb,Ghostscript,Cmyk,根据这一问题: 由于颜色不在RGB中,某些PDF不能正确显示在iOS设备上。还提到可以使用ghostscript自动将PDF从CMYK转换为RGB。有人知道实际命令的样子吗?据我所知,ghostscript只能转换光栅图像中的颜色空间 豆荚色 能够转换矢量对象 您可以尝试通过以下方式将黑白非彩色页面、cmyk转换为灰度: podofocolor grayscale input.pdf output.pdf 如果二进制文件不在存储库中,不幸的是您需要自己构建。然而,我只是尝试用 gs -sOut

根据这一问题:

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

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

豆荚色

能够转换矢量对象

您可以尝试通过以下方式将黑白非彩色页面、cmyk转换为灰度:

podofocolor grayscale input.pdf output.pdf
如果二进制文件不在存储库中,不幸的是您需要自己构建。然而,我只是尝试用

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

预印飞行前检查说它变成了灰度,所以,也许我说gs只能转换pdf中光栅内容的颜色空间是错误的,因为我的pdf是矢量化的

当从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

我在这里通过将-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的所有信息: 在mac上,您可以使用命令。比如说,

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

Thx,我想试试,但我在Ubuntu 10.04上,它没有podofo包。你知道我在哪里可以找到它吗?我更新了我的答案,在尝试将包含向量元素的pdf的颜色空间转换为灰度后,这应该可以工作。但是,由于pdfwrite设备默认使用-dColorConversionStrategy=/sRGB和-dProcessColorModel=/DeviceRGB,因此不需要在命令行中声明它,尽管它也不会造成损害。另一种情况是,如果您希望将PDF颜色转换为CMYK,则需要-dColorConversionStrategy=/CMYK和-dProcessColorModel=/DeviceCMYK…开发人员说,,,只是没有-dColorConversionStrategyForImages开关。