我正在尝试使用GhostScript.NET将pdf发送到打印机,而没有出现打印对话框。我的理解是,如果我在-sOutputFile开关中提供打印机的确切名称,则不会提示用户。
我的打印机的确切名称是101-XER4250,在调试过程中,处理器收到的名称是:"-sOutputFile=% printer %101-XER4250-E“。关于这一点我是不是遗漏了什么?另外,值得一提的是,我使用的是一台带有PCL6驱动程序的复印机。
下面是我的示例代码:
private static void PrintWithGSNET(byte[] pdfFormBytes, string printer, int copies)
{
try
{
var fileName = @"c:\temp\" + $"{DateTime.Now:yyyyMMddhhmmssffff} - {Security.CurrentUser}";
using (var file = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite))
{
file.Write(pdfFormBytes, 0, pdfFormBytes.Length);
using (GhostscriptProcessor processor = new GhostscriptProcessor(GhostscriptVersionInfo.GetLastInstalledVersion(), true))
{
List<string> switches = new List<string>();
switches.Add("-empty");
switches.Add("-dPrinted");
switches.Add("-dBATCH");
switches.Add("-dPDFFitPage");
switches.Add("-dNOPAUSE");
switches.Add("-dNOSAFER");
switches.Add("-dNOPROMPT");
switches.Add("-dQUIET");
switches.Add("-sDEVICE=mswinpr2");
switches.Add("-sOutputFile=%printer%" + printer.Trim());
switches.Add("-dNumCopies=1");
switches.Add(fileName);
processor.StartProcessing(switches.ToArray(), null);
}
file.Close();
}
File.Delete(fileName);
}
catch (Exception ex)
{
throw new InvalidOperationException($"Error printing. [Printer: {printer.Trim()}] [Copies: {copies}", ex);
}
}发布于 2018-01-30 01:40:08
如果您希望用户不会注意到正在打印文件,可以添加no cancel命令switches.Add("-dNoCancel");
发布于 2017-06-01 00:09:48
它是网络打印机吗?我必须用服务器名称来限定我的打印机名称。
如果我将打印机设置为"printerName“,则会弹出对话框。当我将其更改为@"\servername\printerName“时,对话框消失,它静默打印。
https://stackoverflow.com/questions/42446908
复制相似问题