我想通过Ghostscript.NET打印带有所选打印机名称的pdf文件。该应用程序实际上是CefSharp浏览器的包装器。当用户单击下载按钮时,它会直接下载并使用所选打印机打印出来。
您可以看到上面的屏幕截图,我通过URL查询字符串传递打印机名称。另外,我已设置选项-dNOPAUSE
& -dNOPROMPT
。但为什么它仍然出现在打印窗口中,默认选择的打印机不是我设置的?
知道这里出了什么问题吗?
对于命令行中的ghostscript,它就像
"C:\Program Files (x86)\gs\gs9.18\bin\gswin32c.exe"^
-empty^
-dPrinted^
-dBATCH^
-dNOPAUSE^
-dNOPROMPT^
-sFONTPATH=C:\Windows\Fonts^
-dNOSAFER^
-dNumCopies=1^
-sDEVICE=mswinpr2^
-sOutputFile="%printer%Brother MFC-295CN Printer"^
-f C:\Users\Dell\AppData\Local\Temp\file-tmp.pdf
但它仍显示打印提示。
答案 0 :(得分:2)
在命令行中添加-dQueryUser = 3,使用该打印机的默认设置直接打印到默认打印机。
如果要打印的打印机不是Windows默认打印机(在此系统上),则必须在打印对话框中指定打印机。这是因为有2个断开连接的实体。
1)您发送数据的打印机。 2)以正确的格式创建数据。
mswinpr2设备使用Windows打印系统从Ghostscript获取渲染输出并将其转换为打印机可以理解的任何内容(PostScript,HP-PCL,Epson ESC / P等等)。然后它将该数据发送到指定的打印机。注意这就是为什么该打印机的驱动程序必须在本地可用。
但是,mswinpr2设备不知道哪个打印机设备驱动程序对应于“%printer%Name”形式的给定命名打印机,您必须告诉它。如果指定的打印机是Windows默认打印机,那么您可以使用-dQueryUser = 3来表示,否则您需要显示打印机对话框,以便用户可以选择正确的打印机,这就是mswinpr2用来创建数据的那个发送到打印机。
我相信它完全有可能弄错了!如果你在打印机对话框中选择一个PostScript打印机,但是然后设置-sOuputFile =%printer%HP-PCL打印机“该组合将输出格式为PostScript的输出发送到需要PCL的打印机,那么在这种情况下的结果将是大量的垃圾打印输出。
您需要谨慎使用此设备,这就是为什么默认行为是让您从可用打印机列表中选择打印机。