我们有一个具有打印功能的应用程序,该功能适用于除Windows 8上的 Epson 的某些产品之外的所有打印机。我已经设法制作了一个重现问题的最小样本。调用以下方法,并为其提供正确 xps 文件的完整路径。
private void Print(string xpsFilename)
{
if (string.IsNullOrEmpty(xpsFilename))
{
return;
}
PrintDialog printDialog = new PrintDialog();
printDialog.ShowDialog();
PrintQueue defaultPrintQueue = printDialog.PrintQueue;
try
{
// This is were it seems to fail for some Epson printers: no job in spooler, no print ...
PrintSystemJobInfo xpsPrintJob = defaultPrintQueue.AddJob("Print through 'AddJob' on PrintQueue", xpsFilename, false);
}
catch (PrintJobException printJobException)
{
Console.WriteLine("{0} Could not be added to the print queue.", xpsFilename);
Console.WriteLine(printJobException.Message);
}
catch (Exception exception)
{
Console.WriteLine("{0} Unknown error:", xpsFilename);
Console.WriteLine(exception.Message);
}
}
您会看到,如果您选择 Epson 打印机,则后台处理程序中不会出现任何作业,而它可以与任何其他打印机一起使用。
有谁知道它为什么不打印(作业甚至没有出现在线轴中)?在实际应用程序中,我们不使用 xps 文件,而是使用分页器,但出于示例目的,它更简单并且也失败了......
谢谢你的帮助。