我正在尝试构建一个使用在 Windows 下运行的 Ghostscript 打印 PDF 文档的 shell 服务。该服务应该使用 PDF 文档的文件名运行一个简单的命令stdin
,并使用相同的打印机及其设置作为上下文。
默认情况下,Ghostscript 以交互模式启动。这个想法是使用相同的 Ghostscript 进程,而不是在gswin64c.exe
对服务的每个请求上运行。仅用于开发和测试,Microsoft XPS Document Writer
用于在所需的 XPS 文件中获取结果,该文件的名称是手动选择的。这就是我使用 Ghostscript 设备的原因mswinpr2
。在生产环境中,将有另一台打印机。
启动 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
v9.54gswin64c.exe
在通过命令行时无法正确识别它(结果,mswinpr2
打开标准打印对话框以选择打印机)。
然后,打印 PDF 文档:(test.pdf) run
. 但是,打印作业仍enqueuing
处于之后的状态。该showpage
命令只是在输出 XPS 文档中添加一个空白页。在更新打印机的作业队列时可以看到。
问题是应该使用什么 PostScript 或 Ghostscript 命令(或另一种语言)来完成此打印作业(XPS
优雅地关闭输出文件),离开正在运行的 Ghostscript 进程的交互模式以执行进一步的打印命令(test_2.pdf) run
,如(test_3.pdf) run
.