Извлечение cmyk и точечных цветоделений из PDF с помощью Ghostscript - PullRequest
0 голосов
/ 18 июня 2020

Моя конечная цель - узнать степень покрытия чернилами (sDEVICE = ink_cov) каждого разделения в моем PDF-файле, включая плашечный цвет и cmyk. Я пытаюсь вывести их как отдельные файлы с серой шкалой, чтобы я мог обрабатывать их с помощью ink_cov, но каждый раз, когда я запускаю свой скрипт, я получаю --nostringval--. Я пробовал всевозможные комбинации для именования каналов, но ничего не работает. Вот мой сценарий:

gswin64c -dBATCH -dNOPAUSE -sDEVICE=tiffsep -c -sOutputFile=C:\gsfiles\myseps.tiff "<< /SeparationColorNames [/Process Cyan /Process Magenta /Process Yellow /Process Black /myspotred] >> setpagedevice" myspotred.pdf 

вот результат

Error: /undefinedfilename in (<< /SeparationColorNames [/Process Cyan /Process Magenta /Process Yellow /Process Black /myspotred] >> setpagedevice)
Operand stack:

Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push
Dictionary stack:
   --dict:738/1123(ro)(G)--   --dict:0/20(G)--   --dict:75/200(L)--
Current allocation mode is local
Last OS error: Invalid argument
GPL Ghostscript 9.52: Unrecoverable error, exit code 1

Вот файл в acrobat Acrobat вид цветоделений

Спасибо за любая помощь

1 Ответ

0 голосов
/ 18 июня 2020

Вам не нужно связываться с SeparationColorNames.

Даже если вы это сделали, вам нужно указать / Cyan, а не Cyan. В мире PostScript вообще нет ключа / Process, это NChannel, который указан c для PDF и не поддерживается PostScript.

Вы поместили - c не в то место (перед -sOutputFile вместо фактического PostScript). К счастью, это отменяется параметром -sOutputFile. Однако это означает, что ваш фрагмент PostScript не рассматривается как PostScript (потому что именно это означает - c, а - c завершается символом -s). Таким образом, этот фрагмент PostScript обрабатывается как имя файла, поэтому вы получаете ошибку undefinedfilename.

Чтобы получить все разделения, просто выполните:

gswin64c -sDEVICE=tiffsep -o C:\gsfiles\myseps%d.tiff myspotred.pdf

Если вы действительно хотите указать разделение Имена тогда следующие:

gswin64c -sDEVICE=tiffsep -o C:\gsfiles\myseps%d.tiff -c "<< /SeparationColorNames [/myspotred] >> setpagedevice" -f myspotred.pdf

должно быть достаточно. Цвета процесса задаются ProcessColorModel устройства, которым в данном случае является CMYK. Вы не вводите красители Process в массив SeparationColorNames по той очень веской причине, что они не являются цветами Separation. доступны только для чтения. Таким образом, вы можете получить их с помощью currentpagedevice, но setpagedevice не сможет их изменить.

...