Это простая реализация, которая будет печатать сплошной черный или ничего, что не является черным. В зависимости от ваших потребностей, возможно, потребуется усложнить ситуацию. Не зная больше, я применил подход грубой силы использования exitserver. exitserver позволяет переопределить операцию RIP по умолчанию. Чтобы восстановить RIP до нормальной работы, вам необходимо перезагрузить рип или написать другую процедуру сервера выхода, чтобы отменить модификацию сервера.
Подпрограмма устанавливается в рипе, отправив код постскриптума exitserver. Для ПК это можно сделать с помощью команды копирования DOS на общий ресурс принтеров. Существуют также программы sendps, которые можно найти в Интернете для отправки файла на устройство.
copy redef1.ps \\127.0.0.1\psprinter
Эта подпрограмма exitserver определяет функцию/setcmykcolor в UserDict, который будет иметь приоритет над setcmykcolor в системе Dict. в стеке будет 4 номера, в которых последним будет черный. Обратное значение дублируется и сравнивается с нулем. Если черный не равен нулю, черный блок будет выполнен, в противном случае выполняется не черный. 0 setgray = черный и 1 setgray = белый, так как блок существует ниже, черный будет печатать как черный, а все остальное будет печататься как белый.
%!
serverdict begin 0 exitserver
userdict begin /setcmykcolor
{
dup 0 ne
{
%black
0 setgray
pop pop pop pop
}
{
%not black
1 setgray
pop pop pop pop
}ifelse
} def end
При движении задним ходом значение setgray, черный не будет печатать и все остальное «не черные» напечатает.
%!
serverdict begin 0 exitserver
userdict begin /setcmykcolor
{
dup 0 ne
{
%black
1 setgray
pop pop pop pop
}
{
%not black
0 setgray
pop pop pop pop
}ifelse
} def end
Не имеет значения, из какой программы вы печатаете. какая бы последняя версия exitserver не была загружена последним, будет отображаться выход.
Вот простой пример .ps
%!PS-Adobe-3.0
%%Title: mwe.ps
%%Pages: 001
%%BoundingBox: 0 0 595 842
%%EndComments
%%Page: 1 1
%%PageBoundingBox: 0 0 595 842
/Times-Roman findfont 72 scalefont setfont
0 0 0 1 setcmykcolor
0 20 moveto (black) show
0 1 0 0 setcmykcolor
0 40 moveto (not black) show
0 0 0 1 setcmykcolor
0 60 moveto (black) show
1 0 0 0 setcmykcolor
0 80 moveto (not black) show
0 0 0 1 setcmykcolor
0 100 moveto (black) show
0 1 1 0 setcmykcolor
0 120 moveto (not black) show
showpage
выход будет показывать только «черные» или «не черные», но текст надпечатки, так что вы увидите мнимое изображение в зависимости от того цвета не печатает ,
Это exitserver для восстановления RIP использовать обычные setcmykcolor
%!
serverdict begin 0 exitserver
userdict /setcmykcolor undef
Как уже говорилось в начале, это простая реализация, например, позволяя оттенки черного и не черный Там также может быть вариации цветов, где небольшие количества черных, смешанных с цветом, могут обмануть простую рутину, где темно-красный 0 .87 .75 .1 setcmykcolor будет определяться как черный, где он, вероятно, должен быть нечерным.
Я не уверен, что понимаю, какова ваша конечная цель. У вас есть .pdf tht имеет несколько цветов, и вы хотите 2 цвета. Когда вы говорите, что вы разделены, вы говорите, что вы получаете 2 части ч/б пленки? Я просто ответил на другой вопрос постскриптума относительно переопределения оператора постскриптума. Казалось бы, подобный метод может быть использован для переопределения setgray, setrgbcolor и/или setcmykcolor для переопределения цветов. [ссылка] http://stackoverflow.com/questions/14856981/ghostscript-postscript-pswrite-is-encoding-text/14888816#14888816 –
Я постараюсь дать простой пример: У меня есть PDF генерируемый который является RGB (но в конечном итоге это просто красный текст и черный текст в PDF). Красный и черный состоят из элементов RGB внутри PDF. Если я предваряю его CMYK, он становится K = весь черный текст M + Y = Красный текст Я хочу, чтобы он предварял его, чтобы диспетчер чернил PDF показывал C = пусто Y = пусто M = пусто K = черный [точка red] = red – TheStoneFox
Я все еще не уверен, где вы пытаетесь получить или какие параметры вы ограничены. Postscript позволяет переопределить setrgbcolor с помощью специально заданного setcmyk, но такое действие неестественно для postscript. Если контекст позволяет перенести определенный пользователем заголовок, это легко. Если вы можете определить конкретный размер страницы для действия, это легко. Если вы не против перезагрузки RIP, это легко. Но если вы ожидаете, что магия произойдет просто, магия невозможна в нашем мире. На прошлой работе у меня были карты, которые были спроектированы красным цветом, но для каждой редакции для печати требовались разные цвета. это можно сделать. –