Я могу только догадываться о том, что вам нужно на основе исходного файла. Есть DeviceRGB
0.5/0.5/0.5 заполненный прямоугольник, и я подозреваю, что вы хотите, чтобы он стал 0.5 DeviceGray
.
Решения и спекуляции ниже будут работать только для этого и подобных случаев. (Например, я понятия не имею, что такое «Значения CMY», о которых вы пишете, то есть если есть DeviceCMYK
или ICC-based
или что-нибудь еще в ваших файлах). Существуют простые формулы для преобразования между цветовыми пространствами устройства (см. Справочник по PDF), один из них действительно отображает от равных значений в DeviceRGB
к тому же значению в DeviceGray
. Для того, чтобы заставить его работать, используйте GhostScript
9,10:
"C:\Program Files\gs\gs9.10\bin\gswin32c.exe" -sDEVICE=pdfwrite -sProcessColorModel=DeviceGray -sColorConversionStrategy=Gray -dUseFastColor -o test_1.pdf -f test.pdf
Примечание переключатель -dUseFastColor
. Вы получите «правильный» 0.5 полутоновых прямоугольников.
Чтобы заставить его работать в версиях 9,10 .. 9,20 (за исключением обоих), мне пришлось добавить еще один переключатель: -dPDFUseOldCMS
. Опять же, 0,5 градаций серого цвета в результате.
Как видно из последнего названия переключателя, простые вещи, вероятно, считались устаревшими и выглядели как утерянные в 9.20.
Вместо этого был введен новый замечательный двигатель CMS (с 9.10). Кроме того, он не работает для устройств высокого уровня (включая pdfwrite
). Либо отключен, либо отключен, для многих выпусков.
я не смог заставить его работать на любую комбинацию Device- или ICC на основе цвета в качестве источника можно выбрать и командную строку, чтобы сделать это на самом деле использовать опцию -sOutputICCProfile
, либо для DeviceCMYK
или DeviceGray
выхода (или выхода ICC на основе , без разницы). Те же значения цвета в созданных файлах.
Я был бы признателен, если бы кто-то указал, что я ошибаюсь, и показывает противоположный пример.
Он работал, на самом деле (частично - только для устройства-источника цветов), в 9.10:
"C:\Program Files\gs\gs9.10\bin\gswin32c.exe" -sDEVICE=pdfwrite -sProcessColorModel=DeviceGray -sColorConversionStrategy=Gray -sOutputICCProfile=sgray.icc -o test_2.pdf -f test.pdf
Используя различные результаты ICC-профилей в разных (и правильно, это выглядит) вывод. Чтобы преобразовать из равных значений RGB в одинаковые значения Серых, нужен будет профиль с оттенками серого с той же гаммой, что и (по умолчанию) sRGB
. Просто используйте ICC Profile Inspector
, чтобы извлечь кривую от sRGB
и импортировать ее, например. sgray.icc
(распространяется с Ghostscript
).
Преимущество использования профиля для преобразования RGB в серый цвет, сохраняя гамму, в отличие от «простой формулы», описанной выше, может или не стоит усилий. Проверьте свои файлы и цели.
Не используйте -dUseCIEColor, вы начинаете двухэтапный процесс, который, несомненно, произведет неправильный ответ. – KenS