在Epson打印机PrintQueue上使用XPSDocumentWritter进行打印

时间:2013-08-26 13:15:37

标签: c# printing xps

我们的应用程序具有适用于所有打印机的打印功能,但 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文件,而是使用分页器,但出于示例目的,它更简单并且也失败了......

感谢您的帮助。

0 个答案:

没有答案