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

C# 以编程方式将XPS文件打印到物理打印机,c#,winforms,printing,xps,printdocument,C#,Winforms,Printing,Xps,Printdocument,我有一个C#WinForms应用程序。用户上载.XPS文件并指定一些打印机设置(份数、纸盒等)。 程序需要使用这些设置以编程方式打印文档。也就是说,无法打印用户交互 我可以接近系统。打印AddJob方法。(). 但是,我不能在这里定义特定的设置,如纸张来源、份数等 我更喜欢使用PrintDocument方法,但我不知道如何让PrintDocument呈现/打印XPS文档 我已经查看了此资源,但看不到如何使用PrintPageEventHandler呈现XPS文档 有什么想法可以让我继续吗?非常感

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

我可以接近系统。打印AddJob方法。(). 但是,我不能在这里定义特定的设置,如纸张来源、份数等

我更喜欢使用PrintDocument方法,但我不知道如何让PrintDocument呈现/打印XPS文档

我已经查看了此资源,但看不到如何使用PrintPageEventHandler呈现XPS文档

有什么想法可以让我继续吗?非常感谢您的帮助

C#.NET 4.5

更新:

根据下面的答案,我可以在添加作业时发送打印通知单,如下所示:

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

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

使用
AddJob
,您已经走上了正确的道路,但是您需要。您需要使用用户的设置创建一个新的打印票证-任何设置为null的值都将使用该打印队列的默认设置。

谢谢。我不知道我可以用这种方式添加打印票。这很容易让我指定拷贝数,但设置“输入箱”(托盘)似乎更具挑战性。有关于如何设置输入箱的建议吗?虽然存在PrintTicket.InputBin属性,但对InputBin的控制是有限的,这主要是因为不同的制造商以完全不同的方式实现了它。使用XPS,您通常需要选择一个输入PageMediaSize和PageMediaType,然后让打印机决定从哪个箱子中取出。