首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# PrintQueue AddJob printingHandle抛出空异常

C# PrintQueue AddJob printingHandle抛出空异常
EN

Stack Overflow用户
提问于 2017-12-16 01:32:20
回答 1查看 740关注 0票数 3

我正在尝试用C#打印一个文件。我已经列出了所有的打印机,然后写了一些简单的逻辑来选择正确的打印机:

代码语言:javascript
复制
var server = new PrintServer();
var queues = server.GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections }).ToList();

int count = 0;
foreach (var q in queues)
{
    Console.WriteLine(count++ + " " + q.Name);
}

int iSelection = 0;
while (true)
{
    Console.Write("Select printer: ");
    string selection = Console.ReadLine();
    if (int.TryParse(selection, out iSelection) && iSelection >= 0 && iSelection < queues.Count())
    {
        break;
    }
    else
    {
        Console.WriteLine("Bad selection, try again.");
    }
}

对于我在这个站点上看到的帖子,下一步是您需要选择特定的队列,然后添加一个作业,获取作业流,并将其写入流(至少这是我想要尝试的方式,除非它是错误的?)

代码语言:javascript
复制
var queue = queues[iSelection];
var job = queue.AddJob(@".\Test.txt");
var stream = job.JobStream;
var file = File.ReadBytes(@".\Test.txt");
stream.Write(file, 0, file.Length);

当我这样做的时候,程序在使用AddJob时崩溃了。具体来说,

代码语言:javascript
复制
System.ArgumentNullException: 'Value cannot be null, Parameter name: printingHandler'

现在,我想我知道问题出在哪里了。我昨天一直在玩System.Drawing.Printing.PrintDocument,但我正在尝试找到一种解决方案,让我可以打印文件,而不是手动将它们绘制出来并打印出来。最终,未来的目标是能够打印出文本和PDF文件(我希望这个解决方案能让我打开一个PDF文件并将字节转储到这个流中,但我不知道这是不是正确的方法?)

无论如何,我得到的异常我认为是类似于PrintDocument的PrintPageEventHandler,我需要以某种方式向PrintQueue添加一个回调,告诉它字体,颜色,字体大小等。问题是我没有看到PrintQueue允许我为它添加句柄来解决这个问题。

我能做些什么来修复这个异常?

EN

回答 1

Stack Overflow用户

发布于 2018-08-24 11:35:16

我也遇到了这个问题。最后,我发现在调用AddJob()之前,我们需要调用所选PrintQueue实例的Refresh()

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47837231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档