首先,让我解释一下这个问题。
在终端中使用 gsprint ,文档路径通过命令行发送,文档转换为位图,然后发送到指定的打印机。列表中的打印机是系统中已安装的打印机,它不允许您在另一台计算机中指定其他打印机。
我正在开发一个Web打印管理器,通过 ajax 调用可执行文件并将正确的参数发送到 gsprint 。问题出现了:我在应用程序中列出的可用于打印的打印机是来自C#方法的打印机,它将远程计算机的打印机放在同一网络中。我的打印列表不是自己的服务器,我可以使用 RawPrinterHelper 发送文件,但我真的需要使用 gsprint 。我的C#方法带来了打印机和过滤器 PrintServer 的打印机:
public JsonResult GetPrinters()
{
IList<string> printers = new List<string>();
using(var printServer = new PrintServer(string.Format(@"\\{0}", "NITERE")))
{
foreach (var queue in printServer.GetPrintQuest()
.Where(queue => queue.IsShared))
}
return Json(printers);
}
这给了我一台名为\\NITERE\Thermical Printer
的打印机。
当我通过 RawPrinterHelper 发送任何内容时,它的效果非常好。
当我通过 gsprint 发送任何内容时,炸弹会爆炸。并且 gsprint 只是在我的脸上羞耻:
> gsprint -grey -noquery -printer "\\NITERE\Thermical Printer"
> Copyright (C) 2003-2006, Ghostgum Software Pty Ltd. All Rights Reserved.
2006-02-24 gsprint 1.9
Couldn't open Windows GDI printer driver
Requested printer: "\\NITERE\Thermical Printer" (Or whatever "\\\\NITERE\\Thermical Printer")
Available printers:
"ZEBRA Labels Printer"
"Capybaras are sexy"
"Microsoft XPS Document Writer"
"Fax"
"\\SERVER1\Default Printer"
"\\SERVER1.local\Main"
有没有办法让 gsprint 以这种方式支持共享打印?