Ghostscript - как отключить диалог печати в Windows10 или Windows Server 2012 - PullRequest
0 голосов
/ 25 октября 2019

Я вызываю следующее из службы Windows под Windows 10 или Windows Server 2012 (программа на C #, которая выполняет командную команду), но ничего не печатается. Я могу скопировать и вставить отправляемую команду в командную строку, но при этом появляется диалоговое окно печати, и мне нужно нажать «ОК», чтобы файл распечатался (что он и делает). Какой переключатель мне нужно добавить, чтобы диалоговое окно не появлялось и файл печатался напрямую без вмешательства пользователя, поскольку предполагается, что он будет работать без присмотра в качестве службы Windows? Это ghostscript 9.50, который является самым последним на сегодняшний день. В более ранней версии ghostscript это работало, если устройство было установлено на ljet4, но это вызывало ошибку с 9.50. Кроме того, у выходного файла не было префикса% printer% в выходном файле, и ранее он имел префикс \\ spool \. Я перепробовал все эти комбинации. Это mswinpr2, который вызывает нежелательный диалог? Я предполагаю, что именно это мешает печати. ​​

gswin64c -dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -dNumCopies#1 -sDEVICE#mswinpr2 -sOutputFile#"%%printer%%HP LaserJet Professional P1109w" "\\2-DYQJKC2\c$\Webs\myfolder\Public\Reports\HIPAACert\189\H01519447A2191016103332.pdf"

1 Ответ

1 голос
/ 26 октября 2019

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

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

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

Кроме этого, его сложно комментировать. Получаете ли вы что-нибудь на обратном канале (вы также захотите сбросить -q во время отладки)? Очевидно, я не сижу перед вашей системой, поэтому я не вижу, как называется принтер .....

FWIW Я попробовал его здесь с принтером «Adobe PDF», и он работает,но использование «Microsoft XPS Document Writer» этого не делает, и фактически даже при выборе этого из диалогового окна не удается «Невозможно открыть исходное устройство».

[edit]

Немного отладки позже.... Функция DocumentProperties () не работает с Microsoft XPS Document Writer. Я подозреваю, что это связано с тем, что система печати в Windows была значительно переработана для Vista и выше, а Windows 10 избавилась от большей части устаревшего кода. Я подозреваю, что этот старый вызов Win32 API просто не работает с новыми устройствами.

Если ваш принтер работает, когда вы выбираете его в диалоговом окне печати, это не та же проблема. Для меня этот принтер дает сбой, даже если выбран в диалоговом окне печати. Кажется, он просто не совместим со старым Win32 API.

NB. Здесь также отображается ошибка «Ошибка StartDoc принтера (ошибка 00000006)».

Так что я все еще подозреваю, что у вас есть проблемы симя принтера. Возможно, быстрая проверка состояла бы в том, чтобы установить имя на что-то очень простое, например «Printer1», и попробовать это.

Я не могу вспомнить ничего, что изменилось в устройстве ljet4, что могло бы вызвать проблему, выНе говорите, что это за ошибка или даже где она происходит, на принтере или в сообщении Ghostscript, так что на самом деле я ничего не могу предложить.

...