Почему расширенные свойства теряются при печати в файл prn
При печати непосредственно на принтер все расширенные свойства диалогового окна настройки принтера будут работать, например, сшивание, масштабирование до 50 % или создание водяного знака на документе. они очень важны для правильной работы финишера принтера.
Но если я сначала печатаю в файл, а затем копирую файл на принтер, все расширенные свойства теряются в HP Laserjet (PCL).
Чтобы воспроизвести это, я смоделировал это также в Delphi с очень простым кодом. После того, как обычная печать на принтере работала как положено, я изменил только lpszOutput в DocInfo на "...\test.prn" (не более!), И файл prn был сгенерирован. Затем я открыл файл в двоичном режиме и записал его на тот же принтер ("StartDocPrinter","WritePrinter","EndDocPrinter"). И тогда документ был напечатан правильно, но все настройки в расширенных свойствах теряются, без масштабирования, без водяных знаков.
Я подумал, что принтер должен получать точно такой же поток двоичных данных, но, пожалуйста, в чем может быть причина того, что драйвер, очевидно, записывает различный контент в файл prn и отличается от принтера? или есть какие-то флаги или команды, которые я должен установить кодом? это специфическая проблема HP? заранее спасибо.
1 ответ
Вы вызываете PrintDlgEx или PageSetupDlg в обоих случаях?
Свойства находятся в структуре DEVMODE задания на печать, которую драйвер использует при рендеринге задания. Похоже, ваш DEVMODE не настроен правильно или игнорируется, когда вы устанавливаете lpszOutput. Поведение, которое вы видите, очень похоже на то, когда вы снимаете флажок "Включить расширенные функции печати" принтера.
Здесь есть некоторая информация об использовании диалога печати с lpszOutput.