Ghostscript 不解释提供的打印机
Ghostscript doesn't interpret supplied printer
我在 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"
命令不会静默执行,它一直提示我 select 打印机,所以我怀疑 OutputFile 属性 可能是这里的问题。
之前,我有另一个完美运行的命令(见下文),但设置 documentName 的要求迫使我改变它:
-dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -sDEVICE=mswinpr2 -sOutputFile="\spool\ServerName\PrinterName" "c:\test.pdf" "c:\test2.pdf"
谁能指出我正确的方向?需要说明的是,该命令在确认打印机提示后才起作用。
我更喜欢内联解决方案,因为此命令是从托管代码调用的,文档名称是动态的
mswinpr2 设备,至少可以说,是 hacky 和非标准的,正如为了设置它需要弄乱非标准 PostScript 的要求所证明的那样。
您可以尝试保持原始命令行不变,并使用它(在输入文件之前)设置文档名称:
-c "currentdevice //null //false [ /UserSettings <</DocumentName (test) >> .putdeviceparams pop pop" -f
应该在安装后重新配置设备。我真的无法对此进行测试,因为即使我使用有效的打印机,您的命令行也会为我抛出范围检查错误。
原来你需要转义后记部分的反斜杠..
-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"
以上在控制台中工作,当我将它合并到我的 c# 项目中时,我不得不再次转义这些转义,导致这个 c# 字符串
-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\"
很美吧? /s
我在 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"
命令不会静默执行,它一直提示我 select 打印机,所以我怀疑 OutputFile 属性 可能是这里的问题。 之前,我有另一个完美运行的命令(见下文),但设置 documentName 的要求迫使我改变它:
-dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -sDEVICE=mswinpr2 -sOutputFile="\spool\ServerName\PrinterName" "c:\test.pdf" "c:\test2.pdf"
谁能指出我正确的方向?需要说明的是,该命令在确认打印机提示后才起作用。 我更喜欢内联解决方案,因为此命令是从托管代码调用的,文档名称是动态的
mswinpr2 设备,至少可以说,是 hacky 和非标准的,正如为了设置它需要弄乱非标准 PostScript 的要求所证明的那样。
您可以尝试保持原始命令行不变,并使用它(在输入文件之前)设置文档名称:
-c "currentdevice //null //false [ /UserSettings <</DocumentName (test) >> .putdeviceparams pop pop" -f
应该在安装后重新配置设备。我真的无法对此进行测试,因为即使我使用有效的打印机,您的命令行也会为我抛出范围检查错误。
原来你需要转义后记部分的反斜杠..
-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"
以上在控制台中工作,当我将它合并到我的 c# 项目中时,我不得不再次转义这些转义,导致这个 c# 字符串
-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\"
很美吧? /s