Команда Ghostscript для завершения печати в интерактивном режиме?
Я пытаюсь создать службу оболочки, которая печатает документы PDF с помощью Ghostscript, работающего под Windows. Сервис должен запустить простую команду через
stdin
с именем файла PDF-документа и использовать тот же принтер и его настройки в качестве контекста.
По умолчанию Ghostscript запускается в интерактивном режиме. Идея состоит в том, чтобы использовать один и тот же процесс Ghostscript, а не запускать каждый запрос к службе. Только для разработки и тестирования, то
Microsoft XPS Document Writer
используется для получения результата в желаемом файле XPS, имя которого выбирается вручную. Вот почему я использую устройство Ghostscript. В производственной среде будет еще один принтер.
Команда для запуска процесса Ghostscript выглядит следующим образом:
gswin64c.exe -dFitPage -dNOSAFER -dNOPAUSE -q setup_xps.ps
Код Ghostscript из
setup_xps.ps
:
mark
/NoCancel true % don't show the cancel dialog
/OutputFile (%printer%Microsoft XPS Document Writer)
/PageSize [114.0 85.0]
(mswinpr2) finddevice % select the Windows device driver
putdeviceprops
setdevice
Такая установка - единственный способ установить
OutputFile
к
%printer%Microsoft XPS Document Writer
:
gswin64c.exe
v9.54 не распознает его правильно при прохождении через командную строку (в результате
mswinpr2
открывает стандартный диалог печати для выбора принтера).
Затем, чтобы распечатать документ PDF:
(test.pdf) run
. Однако задание на печать остается в
enqueuing
состояние после. И
showpage
команда просто добавляет пустую страницу в выходной документ XPS. Это видно при обновлении очереди заданий принтера.
Вопрос в том, какую команду PostScript или Ghostscript (или другой язык) следует использовать для завершения этого задания печати (которое закрывает вывод
XPS
файл изящно), оставив в интерактивном режиме запущенного процесса Ghostscript для выполнения дальнейших команд печати, таких как
(test_2.pdf) run
,
(test_3.pdf) run
и так далее.