почему расширенные свойства теряются при печати в файл prn

при прямой печати на принтер будут работать все расширенные свойства диалогового окна настройки принтера, т.е. сшивание, масштабирование до 50 % или создание водяного знака на документе. они очень важны для правильной работы финишера принтера.

Но если я сначала распечатаю файл, а затем скопирую файл на принтер, все расширенные свойства будут потеряны для HP Laserjet (PCL).

Чтобы воспроизвести это, я также смоделировал это в Delphi с помощью очень простого кода. После того, как нормальная печать на принтер заработала как положено, я только изменил lpszOutput в DocInfo на "...\test.prn" (не больше!) и prn-файл сгенерировался. Затем я открыл файл в двоичном режиме и записал его на тот же принтер ("StartDocPrinter", "WritePrinter", "EndDocPrinter"). А то документ распечатался правильно, но все настройки в расширенных свойствах сбились, ни масштабирования, ни водяного знака..

Я думал, что принтер должен получать точно такой же поток бинарных данных, но, пожалуйста, в чем может быть причина того, что явно драйвер пишет разное содержимое в файл prn и разное в принтер? или есть какие-то флаги или команды, которые я должен установить по коду? это конкретная проблема HP? заранее спасибо.


person minimix    schedule 12.02.2019    source источник
comment
Покажите свой минимально воспроизводимый пример, чтобы у всех нас был некоторый контекст.   -  person    schedule 13.02.2019


Ответы (1)


Вы вызываете PrintDlgEx или PageSetupDlg в обоих случаях?

Свойства находятся в DEVMODE структуру, которую использует драйвер при рендеринге задания. Похоже, ваш DEVMODE настроен неправильно или игнорируется, когда вы устанавливаете lpszOutput. Поведение, которое вы видите, очень похоже на поведение, когда вы снимаете флажок «Включить расширенные функции печати» принтера.

Некоторая информация об использовании диалога печати с помощью lpszOutput здесь< /а>.

person Nick Westgate    schedule 13.02.2019