1

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

带印刷品的视觉工作室

你可以看到上面的截图,我通过 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

但它仍然显示打印提示。

4

1 回答 1

3

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

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

于 2016-03-05T13:09:09.277 回答