PostScript не будет скреплять две страницы вместе на Konica Minolta

Я пытаюсь отправить простой PostScript на принтер Konica Minolta C364 с финишером для сшивания. Я могу напечатать пару страниц и сшить их, если сделаю это, напечатав, скажем, файл PDF напрямую и выбрав соответствующие настройки в пользовательском интерфейсе печати. Однако я не могу сделать то же самое с помощью команд PostScript.

Я пробовал множество различных команд, добавляя их как в начале, так и в конце .ps файл, начиная с простого:

<< /Staple 3 >>

Затем попробуйте некоторые дополнительные параметры:

<< /Staple 3  /StapleDetails << /Type 17 /Position 17 >> >> setpagedevice
or    
<</Staple 3 /StapleDetails <</Type 1 /StapleLocation(SinglePortrait)>> >> setpagedevice

А потом еще предложения вроде:

<</BindingLocation (LongEdge) >> setpagedevice 
<</Collate true /Rotate false /Jog 0>> setpagedevice 
<</Staple 2 /StapleDetails <</Type 5 /Position (1PLU)>> >> setpagedevice

Ни один из них не имеет никакого эффекта - документ печатается, но сшивание не выполняется вообще.

Я использую неправильные команды или я что-то упускаю?

Я также пытался найти простой готовый .ps файл в Интернете, который имеет те же команды, но я не смог найти. Множество разных предложений на разных форумах и сайтах, но ничего из того, что я пробовал, пока не принесло успеха, поэтому любые предложения приветствуются Спасибо!

РЕДАКТИРОВАТЬ: Вот ссылка на образец .ps файл, который я использую: https://www9.zippyshare.com/v/QW6w7yHl/file.html

К сожалению, я должен сделать это по ссылке, так как код слишком длинный, ~11 тыс. Строк.

РЕДАКТИРОВАТЬ 2: После сохранения PostScript в файл вместо отправки его на принтер я смог просмотреть сгенерированный код и извлечь следующие строки, которые делают сшивание, если добавить его поверх файла:

@PJL COMMENT
@PJL SET ORIENTATION = PORTRAIT
@PJL SET BINDING = LEFT
@PJL SET FINISH = LEFT1POINT
@PJL SET EDGEMATCHING = FINISH
@PJL ENTER LANGUAGE = POSTSCRIPT

Надеюсь, они будут добавлены в ответ ниже!

1 ответ

Решение

Ожидается, что зависящие от устройства действия (такие как Staple, а также Duplex, Tumble, Collate и т. Д.) Будут управляться на уровне языка 2 или 3 с помощью вызова setpagedevice.

Некоторые зависящие от устройства функции (например, дуплекс) хорошо определены в спецификации, другие менее четко определены, и производители могут создавать собственные пары ключ / значение, которые полностью не определены. То, как работает оператор setpagedevice, будет игнорировать все, что он не понимает.

Так что я бы ожидал:

<< /Staple 3 >>

Ничего не делать. Это просто создает словарь с ключом / скобой и значением 3, а затем просто оставляет этот операнд в стеке операндов, где он будет оставаться до конца задания.

Другие ваши примеры передают словарь в setpagedevice, чтобы они могли что-то делать, хотя Collate и BindingLocation не влияют на сшивание! Обратите внимание, что отправка их в конце программы PostScript не принесет ничего полезного, потому что к тому времени программа будет завершена, и страницы будут напечатаны.

Также возможно, что размещение его на передней панели программы PostScript также не будет иметь никакого эффекта, поскольку возможно, что содержимое программы начинается с сброса устройства до его состояния по умолчанию. Если это так, то вам нужно вставить вызов setpagedevice в программу в соответствующем месте. Если программа совместима с DSC, то есть определенное место, куда вы можете ее поместить, если нет, то, честно говоря, все ставки выключены. Но большинство программ PostScript совместимы с DSC.

Проблема в том, что точные детали требуемых значений зависят от производителя, поэтому невозможно сказать вам, что именно вы должны использовать.

Лучший способ выяснить это, как правило, выбрать "печать в файл" и распечатать документ с настройкой, которая, как вы знаете, включит сшивание (предварительно опробовав его при необходимости). После этого вы можете открыть полученный файл с помощью текстового редактора и просмотреть его для установки сшивания.

К сожалению, панель управления принтером может выполнять любые действия, а может даже не управлять принтером через PostScript. Вы уверены, что этим можно управлять через PostScript? Вы пытались связаться с производителем и обратиться в его службу поддержки?

Если вы можете захватить программу, как описано выше (в идеале, когда печатный контент настолько прост, насколько это возможно, чтобы уменьшить размер и сложность), опубликуйте ее где-нибудь на общедоступном URL-адресе, а затем разместите здесь. Я посмотрю на это. Если бы вы могли опубликовать программу PostScript, которую вы также хотите изменить, тогда я скажу вам, куда вставить код в эту программу.

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

[РЕДАКТИРОВАТЬ]

Программа PostScript является выводом устройства Ghostscript ps2write, поэтому я подозреваю, что вы не используете pdf2ps.exe, но вместо этого используют pdf2ps.bat, скрипт командной оболочки, который вызывает Ghostscript. Вы также используете более старую версию Ghostscript (9.20). Из соображений безопасности вам следует перейти на версию 9.25 (которая должна быть произведена в ближайшие пару дней).

Но я до сих пор не знаю, как правильно настроить ваш сшиватель. Как я уже отмечал выше, если вы можете печатать на принтере из вашей операционной системы и заставить его активировать сшивание, то вы можете захватить PostScript и извлечь из него соответствующую часть.

Но без этого я ничего не могу тебе сказать.

Как и требовалось, вот код PJL (не PostScript) из исходного вопроса, который, очевидно, работает для добавления сшивания):

@PJL COMMENT
@PJL SET ORIENTATION = PORTRAIT
@PJL SET BINDING = LEFT
@PJL SET FINISH = LEFT1POINT
@PJL SET EDGEMATCHING = FINISH
@PJL ENTER LANGUAGE = POSTSCRIPT
Другие вопросы по тегам