繁体   English   中英

C#PrintQueue AddJob printingHandle引发null异常

[英]C# PrintQueue AddJob printingHandle throws null exception

我正在尝试使用C#打印文件。 我在列出所有打印机方面取得了一些进展,然后编写了一些简单的逻辑来选择正确的打印机:

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.");
    }
}

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

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处崩溃。 特别,

System.ArgumentNullException: 'Value cannot be null, Parameter name: printingHandler'

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

无论如何,我认为我的异常类似于PrintDocument的PrintPageEventHandler,我需要以某种方式向PrintQueue添加回调,以告知其字体,颜色,字体大小等。问题是我对PrintQueue看不到任何东西,因此我无法为此添加一个句柄以解决此问题。

我该如何解决此异常?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM