使用ghostscript在打印机队列中显示自定义名称

本文关键字:显示 自定义 队列 ghostscript 打印机 使用 | 更新日期: 2023-09-27 18:12:38

我写的代码显示在下面,应该将ghostscript参数查询存储在变量中,并在文件名下的printerqueue中返回outputfilename var。但由于某种原因,一旦代码被执行,就会到达打印机队列(它告诉我它的穷种子,这就是我所知道的(,但队列中的输入会闪烁,然后立即消失。

我不知道我的查询或其他地方是否有错误,但我怀疑查询有错误,我几乎不知道该如何自己解决这个问题,这是我的最后手段。

 var outputfilename = job.Configuration.PrintFileName.Name;
        var duplexSetting = SetDuplex(printJob);
        var colorSetting = SetColor(printJob);
        var copiesSetting = SetCopies(printJob);
        var gsArguments = string.Format($"-ghostscript '"{GhostScript.GetGsPrintExecutablePath()}'"" +
                                      $"{colorSetting}{duplexSetting}{copiesSetting} " +
                                      "-noquery -dPDFFitPage -printer '"" +
                                      $"{_printerRepository.Find(x => x.FirstOrDefault(y => y.Id == printJob.Printer)).PrinterName}'" '"" +
                                      $"{ printJob.SourceXml}'"" +
                                      $"-dNOPAUSE -dBATCH -c '"mark / UserSettings <</ DocumentName({outputfilename}) >> (mswinpr2)finddevice putdeviceprops setdevice'"");
        var gsProcessInfo = new ProcessStartInfo
        {
            WindowStyle = ProcessWindowStyle.Hidden,
            FileName = GhostScript.GetGsPrintExecutablePath(),
            Arguments = gsArguments,
            UseShellExecute = true
        };
        var gsProcess = Process.Start(gsProcessInfo);
        gsProcess?.WaitForExit();

使用ghostscript在打印机队列中显示自定义名称

通过如下显示命令行解决了问题:var gsArguments = string.Format("-ghostscript '"{0}'"{1}{2}{3} -noquery -dPDFFitPage -printer '"{4}'" '"{5}'" '"{6}'"", GhostScript.GetExecutablePath(), colorSetting, duplexSetting, copiesSetting, _printerRepository.Find(x => x.FirstOrDefault(y => y.Id == printJob.Printer)).PrinterName, printJob.SourceXml, outputfilename);

所有变量都表示特定的设置,与ghostscript上的文档所说的相反,应该使用/Usersettings,然后使用/Documentname,我只是将变量与其他变量内联,它显示要在打印机队列中显示的名称集

如果我误解了文档,请随时纠正我,我会发布这个答案来帮助未来遇到同样问题的人。