以编程方式将 XPS 文件打印到物理打印机

Programmatically print an XPS file to a physical printer

我有一个 C# WinForms 应用程序。用户上传一个 .XPS 文件并指定一些打印机设置(份数、纸盒等)。 该程序需要以编程方式打印具有这些设置的文档。即,不能有要打印的用户交互。

我可以接近 System.Printing AddJob 方法。 (https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/how-to-programmatically-print-xps-files)。但是,我不能在这里定义具体的设置,比如纸张来源、份数等。

我更愿意使用 PrintDocument 方法,但我不知道如何将 PrintDocument 获取到 render/print XPS 文档。

我查看了此资源,https://msdn.microsoft.com/en-us/library/system.drawing.printing.printdocument.printpage(v=vs.110).aspx,但看不出如何让 PrintPageEventHandler 呈现 XPS 文档。

关于我如何继续的任何想法?将不胜感激!

C#.NET 4.5

更新:

根据以下答案,我可以在添加作业时发送 PrintTicket,如下所示:

 PrintTicket pt = printQueue.DefaultPrintTicket;
 pt.CopyCount = 2;
 // pt.InputBin = [ InputBin enum option ]
 printQueue.AddJob("name", "file", false, pt);

我看不到为 PrintTicket 设置 InputBin 的任何简单方法。 InputBin 是一个枚举,没有仅设置为可用 bin 之一的名称的选项。

AddJob 的方向是正确的,但是您需要 version that accepts a PrintTicket。您将需要使用用户的设置创建一个新的 PrintTicket - 任何设置为 null 的值最终都将使用为该 PrintQueue 设置的默认值。