如何在C#中获取队列中打印作业的文件路径
本文关键字:作业 文件 路径 打印 获取 队列 | 更新日期: 2023-09-27 18:29:26
我想在.NET4中使用C#获得排队打印作业及其文件路径的列表。我看了一下,但没有看到任何关于filepath的内容。我尝试了以下代码(从某个示例修改而来),希望job.Name
或job.JobName
是我想要的,但它没有运行:
当有作业时,调用GetPrintJobInfoCollection()
总是引发NullReferenceException
(打印机脱机,因此作业总是在队列中等待)。当作业从队列中删除时(通过单击右下角的打印机图标),不会发生异常。
所以两个问题:
- 为什么选择
NullReferenceException
- 如果此方法失败,还有其他方法可以获得排队的文件路径吗
提前感谢!
public static void testPrinter()
{
PrintQueueCollection printQueues = null;
PrintServer printServer = new PrintServer();
printQueues = printServer.GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections });
foreach (PrintQueue printQueue in printQueues)
{
foreach (var job in printQueue.GetPrintJobInfoCollection())
{
Console.WriteLine(string.Format("jobname={0} name={1} size={2} status={3}", job.JobName, job.Name, job.JobSize, job.JobStatus));
}
}
}
事实证明,只有当打印机脱机时才会发生异常。当打印机联机时,job.Name
给出文件路径,而job.JobName
只显示"打印系统文档"。