You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

交互式模式下Ghostscript结束打印作业且保持进程运行的命令求解

Windows平台Ghostscript复用进程打印PDF作业提交解决方案

核心解决命令

每次打印完单份PDF文件后,执行以下PostScript指令即可提交当前打印作业、关闭输出文件,同时保持Ghostscript交互进程和打印机配置上下文不被销毁:
<</EndJob true>> setpagedevice

原理解释

  • Ghostscript的mswinpr2设备默认会将打印页缓存到作业队列中,只有收到EndJob信号时才会正式提交作业、完成文件写入(XPS测试场景)或发送给物理打印机
  • 之前手动执行showpage生成空白页的原因是:调用(xxx.pdf) run时,Ghostscript的PDF解释器已经自动处理了PDF内部所有页面的showpage指令,额外调用该指令会追加新的空白页
  • setpagedevice传入EndJob=true时只会触发作业提交逻辑,不会销毁当前已初始化的打印机配置,因此后续可直接调用打印命令处理下一份PDF

可选优化(提前配置免每次传参)

你可以修改setup_xps.ps文件,在setdevice行之前追加以下配置,后续提交作业逻辑完全不变:

/CloseDeviceWhenDone false def

修改后的完整setup_xps.ps内容如下:

mark
  /NoCancel      true                       % don't show the cancel dialog
  /OutputFile (%printer%Microsoft XPS Document Writer)
  /PageSize [114.0 85.0]
  /CloseDeviceWhenDone false                % 设备作业提交后不销毁上下文
  (mswinpr2) finddevice                     % select the Windows device driver
  putdeviceprops
setdevice

完整操作流程验证

  1. 启动Ghostscript进程(命令保持不变):
    gswin64c.exe -dFitPage -dNOSAFER -dNOPAUSE -q setup_xps.ps
  2. 打印第一份PDF:
    (test.pdf) run
  3. 提交当前作业(XPS文件此时会完成写入,队列中排队的作业消失):
    <</EndJob true>> setpagedevice
  4. 直接打印第二份PDF,无需重新初始化设备:
    (test_2.pdf) run
  5. 重复步骤3提交第二份作业即可

生产环境适配说明

切换为业务打印机时无需修改核心逻辑,仅需调整setup_xps.ps中的OutputFile参数为对应打印机名称即可,作业提交命令完全兼容。


内容的提问来源于stack exchange,提问作者Aleksey F.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 14:30:01