You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

获取打印作业用户所选打印颜色时始终返回彩色的问题求助

获取打印作业用户所选打印颜色时始终返回彩色的问题求助

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

打印对话框中选择黑白打印的界面

我尝试过通过PrintTicket或者PrintCapabilitiesOutputColor属性来获取设置,但这两种方式都没能得到正确的结果——哪怕我选了黑白,它们还是返回“彩色”。

下面是我从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

火山引擎 最新活动