使用 ghostscript 在打印机队列中显示自定义名称
show custom name in printerqueue with ghostscript
我在这里显示的 cod 应该将 ghostscript 参数查询存储在变量中,return 打印机队列中文件名下的 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();
问题已通过如下显示命令行解决: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 我只是将变量与其余变量内联,它显示名称集以显示在打印机队列
如果我误解了文档,请随时纠正我,我发布这个答案是为了帮助以后遇到与我相同问题的任何人。
我在这里显示的 cod 应该将 ghostscript 参数查询存储在变量中,return 打印机队列中文件名下的 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();
问题已通过如下显示命令行解决: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 我只是将变量与其余变量内联,它显示名称集以显示在打印机队列
如果我误解了文档,请随时纠正我,我发布这个答案是为了帮助以后遇到与我相同问题的任何人。