获取打印作业用户所选打印颜色时始终返回彩色的问题求助
获取打印作业用户所选打印颜色时始终返回彩色的问题求助
我正在开发一个自动化打印应用,想要获取用户提交打印作业时选择的打印颜色,但遇到了一个棘手的问题:不管我在打印对话框里选择黑白打印,程序始终返回“彩色打印”的结果。

我尝试过通过PrintTicket或者PrintCapabilities的OutputColor属性来获取设置,但这两种方式都没能得到正确的结果——哪怕我选了黑白,它们还是返回“彩色”。
下面是我从PrintSystemJobInfo中获取相关信息的代码:
Form1 f = form as Form1; PrintSystemJobInfo job = e.JobInfo; if (job == null) return; f.UpdatePrintInfoList(job, e); if (job.IsSpooling) { job.Pause(); pausedJobs.Add(new PausedJob(e.JobID)); } else if (job.IsPaused) { PrintQueue pq = job.HostingPrintQueue; pq.Refresh(); PrintJobSettings pjs = pq.CurrentJobSettings; PrintTicket pt = pq.UserPrintTicket; PrintCapabilities pc = pq.GetPrintCapabilities(); string outputColor = string.Empty; if (pc.OutputColorCapability.Contains(OutputColor.Color)) { outputColor = "Color"; } else if (pc.OutputColorCapability.Contains(OutputColor.Grayscale)) { outputColor = "Grayscale"; } else if (pc.OutputColorCapability.Contains(OutputColor.Monochrome)) { outputColor = "Monochrome"; } else { outputColor = "Unknown"; } PrinterSettings ps = new(); ps.PrinterName = printer; string jobDetails = string.Format( "Job Status: {0}\n" + "Printer: {1}\n" + "No. of Pages: {2}\n" + "Output Color (PrintTicket): {3}\n" + "Output Color (PrintCapabilities): {4}\n" + "\nWould you like to continue printing?", "Paused", printer, job.NumberOfPages, pt.OutputColor, outputColor); }
有没有朋友能帮我看看问题出在哪?为什么没法正确获取用户选择的打印颜色呢?
备注:内容来源于stack exchange,提问作者SoftSol




