Ghostscript.NET无法使用选定的打印机名称进行打印

时间:2016-03-04 02:56:48

标签: c# winforms ghostscript cefsharp ghostscript.net

我想通过Ghostscript.NET打印带有所选打印机名称的pdf文件。该应用程序实际上是CefSharp浏览器的包装器。当用户单击下载按钮时,它会直接下载并使用所选打印机打印出来。

Visual studio with print

您可以看到上面的屏幕截图,我通过URL查询字符串传递打印机名称。另外,我已设置选项-dNOPAUSE& -dNOPROMPT。但为什么它仍然出现在打印窗口中,默认选择的打印机不是我设置的?

知道这里出了什么问题吗?

编辑:2016年3月4日上午11:31

对于命令行中的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

但它仍显示打印提示。

1 个答案:

答案 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的打印机,那么在这种情况下的结果将是大量的垃圾打印输出。

您需要谨慎使用此设备,这就是为什么默认行为是让您从可用打印机列表中选择打印机。