2015-04-25 2 views
1

Я пытаюсь сделать это с помощью Ghostscript:Как программно конвертировать PDF в оттенки серого, используя только черные чернила?

gs -sOutputFile=gray.pdf   \ 
    -sDEVICE=pdfwrite    \ 
    -sColorConversionStrategy=Gray \ 
    -dProcessColorModel=/DeviceGray \ 
    -dNOPAUSE -dBATCH    \ 
    -dAutoRotatePages=/None   \ 
    color.pdf 

Но это не приводит к используя только черные чернила:

gs -q -o - -sDEVICE=inkcov gray.pdf 

0.15365 0.15365 0.15365 0.09419 CMYK OK 

я могу сделать преобразование успешно используя Adobe продукты, но я d хотел бы иметь возможность сделать это более автоматизированным способом.

+0

Какую версию Ghostscript вы используете и на какой платформе? Это похоже на Linux, поэтому следующий вопрос: вы сами его компилировали из наших источников или используете упакованную версию? Где копия «color.pdf», чтобы мы могли проверить файл? – KenS

+0

У меня была такая же проблема как на Ubuntu, так и на Mac OS X, используя ghostscript, установленный из диспетчера пакетов в обоих случаях. Это также происходит с несколькими различными файлами. –

+0

Вот пример одного файла: https://drive.google.com/file/d/0B64011x02sIkUHp6TWctRlZSbTQ/view?usp=sharing –

ответ

1

Это (в основном) из-за работы чернильницы.

Ваш файл PDF содержит группу прозрачности с пространством смешивания DeviceRGB. Обратите внимание, что это фактически не создает какой-либо вывод RGB, а просто означает, что любые объекты, которые смешиваются, должны выполняться в пространстве RGB. Поэтому все, что не в DeviceRGB (например, все объекты в Gray) должно быть сначала преобразовано в RGB, затем смешено, а затем преобразовано в пространство устройства для рендеринга.

Поскольку inkcov является устройством CMYK, это означает, что смешанные объекты RGB затем должны быть преобразованы в CMYK. В результате получается менее совершенный черный цвет. Файл PDF фактически не содержит ничего, кроме спецификаций серого цвета, за исключением указания пространства смешивания прозрачности как RGB.

Посмотрите, что, по-видимому, делает Acrobat, кажется, что это простое решение, которое нужно использовать, также измените пространство прозрачности в DeviceGray. Мы знаем из предыдущего опыта, что смешивание в разных пространствах приводит к различиям в рендеринге. С другой стороны, так же меняется цветовое пространство всех цветовых спецификаций ...

Для того, чтобы провести некоторое исследование, я, вероятно, спустится по дороге в следующем выпуске.

+0

Я не совсем уверен, что понимаю ответ. Вы говорите, что я преобразовал PDF, чтобы использовать только черные чернила успешно, но что мой метод использования inkcov для проверки, если он использует только черные чернила, неверен? Если да, то какой метод тестирования для черных чернил следует использовать? –

+0

Это зависит от того, что вы считаете «преобразованным». В файле нет цветовых спецификаций, которые не находятся в сером устройстве, однако файл использует прозрачность, а пространство смешивания для прозрачности остается как DeviceRGB.Это означает, что все, что было сделано в этой группе, сначала преобразуется в RGB, смешивается, а затем преобразуется обратно в пространство устройства. Поскольку inkcov является CMYK, это преобразование приводит к цветам, отличным от черного. Вы не можете «проверять только черные чернила», поскольку использование чернил зависит от устройства вывода. Вы можете посмотреть только значения цвета в файле PDF. – KenS