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

我有一个C#WinForms应用程序。 用户上载.XPS文件并指定一些打印机设置(份数,纸盘等)。 程序需要以编程方式使用这些设置打印文档。 也就是说,不能打印用户交互。

我可以接近System.Printing AddJob方法。 ( https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/how-to-programmatically-print-xps-files )。 但是,我无法在此处定义特定设置,如纸张来源,份数等。

我更喜欢使用PrintDocument方法,但我无法弄清楚如何让PrintDocument渲染/打印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进入正确的轨道,但是您需要接受PrintTicket的版本 。 您需要使用用户的设置创建一个新的PrintTicket – 任何设置为null的值最终都将使用为该PrintQueue设置的默认值。