c# - 如何在 C# 中获取队列中打印作业的文件路径

标签 c# .net printing

我想在 .NET 4 中使用 C# 获取排队打印作业及其文件路径的列表。我查看了 this ,但没有看到任何关于文件路径的信息。我尝试了以下代码(从某处的示例修改而来),​​希望 job.Namejob.JobName 是我正在寻找的代码,但它没有运行:

调用 GetPrintJobInfoCollection() 总是在有作业时引发 NullReferenceException(打印机处于脱机状态,因此作业始终在队列中等待)。从队列中删除作业时(通过单击右下角的打印机图标),不会发生异常。

所以 2 个问题:

  1. 为什么 NullReferenceException
  2. 如果此方法失败,还有其他获取排队文件路径的方法吗?

提前致谢!

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 只说“打印系统文档”。

关于c# - 如何在 C# 中获取队列中打印作业的文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26793885/

相关文章:

c# - 为什么参数化通用接口(interface)的 GetMethods() 返回非参数化 MethodInfo

c - 如何使用 Nasm 汇编器使用 C-printf() 仅打印一定数量的字节?

c# - 如何从 C# 中的数据集或数据表导出 Excel?

c# - 如何使用 .net 创建加密文件容器

c# - LinQ 查询从 DataTable 中选择 DataRow

.net - Microsoft.AnalysisServices.dll 在哪里

Android:连接并打印到 Bixolon SPP-R200

html - Firefox css 打印问题

c# - 递归层次父子

c# - 是否存在将源代码转换回 CodeCompileUnit 的现有方法?