Ghostscript不解释提供的打印机

时间:2016-10-11 09:25:00

标签: ghostscript

我无法在GhostScript中静默执行以下命令:

  

-q -dBATCH -dNOPAUSE -dNODISPLAY -c“mark / NoCancel true / OutputFile(\\ spool \ ServerName \ PrinterName)/ UserSettings<< / DocumentName(test)>>(mswinpr2)finddevice putdeviceprops setdevice “-f”c:\ test.pdf“”c:\ test2.pdf“

该命令不会以静默方式执行,它会一直提示我选择一台打印机,所以我怀疑OutputFile属性可能是一个问题。 之前,我有另一个完美的命令(见下文),但是设置documentName的要求迫使我改变它:

  

-dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -sDEVICE = mswinpr2 -sOutputFile =“\\ spool \\ ServerName \ PrinterName”“c:\ test.pdf”“c:\ test2.pdf”

有人能指出我正确的方向吗?为了清楚起见,在确认打印机提示后该命令可以正常工作。 我更喜欢内联解决方案,因为此命令是从托管代码调用的,其中documentName是动态的

2 个答案:

答案 0 :(得分:0)

至少可以说,mswinpr2设备是hacky和非标准设备,需要弄乱非标准的PostScript才能设置它。

您可以尝试保持原始命令行不变,并使用它(在输入文件之前)设置DocumentName:

-c "currentdevice //null //false [ /UserSettings <</DocumentName (test) >> .putdeviceparams pop pop" -f

应该在安装后重新配置设备。我真的不能测试这个我害怕,因为你的命令行会为我抛出一个范围检查错误,即使我使用的是有效的打印机。

答案 1 :(得分:0)

原来你需要在postscript部分中转义反斜杠。

  

-q -dBATCH -dNOPAUSE -dNODISPLAY -c&#34; mark / NoCancel true / OutputFile(\\\\ spool \\\\\\ ServerName \ PrinterName)/ UserSettings&lt;&lt; / DocumentName(test)&gt;&gt; (mswinpr2)finddevice putdeviceprops setdevice&#34; -f&#34; c:\ test.pdf&#34; &#34; C:\ test2.pdf&#34;

以上在控制台中工作,当我将它合并到我的c#项目中时,我不得不再次逃避这些转义,导致这个c#字符串

  

-q -dBATCH -dNOPAUSE -dNODISPLAY -c \&#34; mark / NoCancel true / OutputFile(\\\\\\\\ spool \\\\\\\\\\\\ ServerName \\ PrinterName )/ UserSettings&lt;&lt; / DocumentName(test)&gt;&gt; (mswinpr2)finddevice putdeviceprops setdevice \&#34; -f \&#34; c:\\ test.pdf \&#34; \&#34; C:\\ test2.pdf \&#34;

美丽不是吗? / s的