使用ghostscript在printerqueue中显示自定义名称

时间:2016-10-11 13:31:54

标签: c# ghostscript

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

我不知道我的查询或其他地方是否有错误,但我怀疑查询是错误的,我知道很少有ghostscript来解决这个问题,这是我的最后一招。

 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();

1 个答案:

答案 0 :(得分:0)

通过显示命令行来解决问题: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我只是将变量与其余变量内联并显示设置为在printerqueue中显示的名称< / p>

如果我误解了文档可以随意纠正我,我会发布这个答案来帮助那些遇到与我未来相同问题的人。