Как конвертировать PDF из CMYK в RGB, для отображения на iPad? - PullRequest
4 голосов
/ 12 декабря 2011

Согласно этому вопросу:

Отображение PDF-документов на iPad - проблемы с цветом

некоторые PDF-файлы не отображаются правильно на устройствах iOS из-за отсутствия цветов вRGB.Также упоминается, что преобразование PDF-файлов из CMYK в RGB может быть автоматизировано с помощью ghostscript.Кто-нибудь знает, как может выглядеть настоящая команда?

Ответы [ 4 ]

5 голосов
/ 14 декабря 2011

Мы используем Ghostscript для преобразования из CMYK в RGB при создании PDF-файлов из файлов Postscript.Он также должен работать для преобразований PDF в PDF.

Используется следующая командная строка:

gs -sDEVICE=pdfwrite -dBATCH -dNOPAUSE -dCompatibilityLevel=1.4 -dColorConversionStrategy=/sRGB -dProcessColorModel=/DeviceRGB -dUseCIEColor=true -sOutputFile=output.pdf input.ps
2 голосов
/ 14 ноября 2013

Я решил ту же проблему здесь, понизив -dCompatibilityLevel с версии 1.4 до версии 1.3

ОБНОВЛЕНИЕ : v1.3 превратит весь контент в PDF простоодин объект, это означает, что конечный пользователь не сможет ни выбирать тексты, ни извлекать изображения в своем средстве просмотра.

Чтобы продолжать использовать v1.4, я обнаружил уловку на ghostscript, которая помогает сохранитьТочность цветопередачи, которая заключается в отключении прозрачности PDF, конвертируется неточно, потому что RGB не имеет альфа-канала, поэтому информация теряется.

Поэтому, если вы используете: -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

1 голос
/ 12 декабря 2011

насколько я знаю, 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 векторизован)

0 голосов
/ 09 ноября 2017

На Mac вы можете использовать команду sips .Например,

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

И PDF-файл RGB можно преобразовать в CMYK таким же образом (замените «Generic RGB Profile.icc» на «Generic CMYK Profile.icc»).

Проверено на OSX 10.12.

...