Переопределение postscript / setcmykcolor - PullRequest
1 голос
/ 17 июня 2020

Я пытаюсь изменить цвет из файлов EPS, которые содержат только векторы (без растров). В настоящее время я конвертирую их в SVG, манипулирую цветами и конвертирую их обратно в PDF или EPS с помощью Inkscape. Это работает отлично, но не позволяет мне применять расцветку CMYK, только RGB. После небольшого исследования и поиска ответов вроде this или this я пытаюсь переопределить функцию /setcmykcolor, которую использует мой файл EPS. Вы можете скачать его с здесь .

EPS выглядит так:

enter image description here

И я хочу преобразовать цвет в CMYK = 0 1 1 0, чтобы он выглядел так:

enter image description here

В этом случае файл EPS черный, но он может быть любой другой цвет. Я попытался добавить это после %%BeginProlog, которое должно переопределить /setcmykcolor, чтобы всегда применять 0 1 1 0 в качестве цвета CMYK:

/osetcmykcolor {/setcmykcolor} bind def /setcmykcolor {pop [0 1 1 0] osetcmykcolor} def

Или это:

/osetcmykcolor {/setcmykcolor} bind def /setcmykcolor {0 1 1 0 osetcmykcolor} def

Но все все еще черный. Я знаю, что /setcmykcolor - правильная функция, потому что использование 0 1 1 0 setcmykcolor непосредственно перед рисованием пути делает его красным. Я просмотрел руководства по программированию PostScript, но мне трудно понять, что здесь не так!

Любая помощь будет принята с благодарностью!

1 Ответ

1 голос
/ 17 июня 2020
• 1000 4 (хотя это не приведет к потере цвета, просто останется мусор в стеке).

Редактирование файла EPS:

%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 564 454
%%HiResBoundingBox: 0.00 0.00 564.00 453.20
%%Creator: GPL Ghostscript 921 (eps2write)
%%LanguageLevel: 2
%%CreationDate: D:20200616000003-03'00'
%%Pages: 1
%%EndComments
%%BeginProlog
/osetcmykcolor /setcmykcolor load def
/setcmykcolor {pop pop pop pop 0 1 1 0 osetcmykcolor} bind def
/DSC_OPDFREAD true def

, а затем его запуск с помощью:

gs color1.eps

также выводит оранжевый текст. Так как вы это тестируете?

...