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

时间:2017-07-25 19:23:54

标签: c# winforms printing xps printdocument

我有一个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的名称。

1 个答案:

答案 0 :(得分:3)

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