使用Ghostscript打印PDF到Zebra ZM600时驱动调整参数不生效如何解决
问题解决方案
Ghostscript参数调整方案
你当前使用的mswinpr2输出设备默认会使用Ghostscript内置的默认打印参数,不会主动读取打印机驱动中保存的自定义配置,因此你在驱动中调整的标签尺寸、打印浓度、边距等参数无法生效,可以通过新增以下参数解决:
- 删除不必要的
-dNOSAFER参数,该参数会带来文件执行安全风险,打印场景不需要开启 - 新增
-dQueryUser=3参数,强制Ghostscript在提交打印任务前加载当前打印机驱动的用户配置 - 新增
-dUseDefaultDriverSettings参数,优先使用驱动保存的默认参数覆盖Ghostscript的默认配置
修改后的核心代码如下:
using (GhostscriptProcessor processor = new GhostscriptProcessor()) { List<string> switches = new List<string>(); switches.Add("-empty"); switches.Add("-dPrinted"); switches.Add("-dBATCH"); switches.Add("-dNoCancel"); switches.Add("-dNOPAUSE"); switches.Add("-dNumCopies=1"); switches.Add("-dQueryUser=3"); switches.Add("-dUseDefaultDriverSettings"); switches.Add("-sDEVICE=mswinpr2"); switches.Add("-sOutputFile=%printer%" + printerName); switches.Add("-f"); switches.Add(path); processor.StartProcessing(switches.ToArray(), null); _logger.Info("After starting process"); }
适配标签打印机的替代打印方案
如果调整Ghostscript参数仍无法满足需求,可选择以下更适配标签打印场景的方案:
- 原生Windows打印方案:使用
System.Drawing.Printing或PrintQueue相关API,配合PdfiumViewer库渲染PDF后直接提交打印任务,该逻辑和Adobe Reader的打印逻辑完全一致,会100%继承驱动中的所有配置参数,适配性更强。 - ZPL指令打印方案:斑马ZM600支持ZPL指令,可先将PDF转换为ZPL指令,直接将原始指令发送到打印机,无需经过驱动打印队列,批量打印的稳定性更高,也可直接在指令中调整所有打印参数,无需依赖驱动配置。
- 原始打印方案:使用RawPrint类将PDF文件直接发送到打印机端口,只要打印机支持直接解析PDF格式,即可自动应用驱动中的所有配置,兼容性优于Ghostscript的mswinpr2设备。
内容的提问来源于stack exchange,提问作者Atle Kristiansen
相关产品推荐
相关产品推荐

