我有一个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的名称。
答案 0 :(得分:3)
您使用AddJob
走在正确的轨道上,但是您需要version that accepts a PrintTicket。您需要使用用户的设置创建一个新的PrintTicket - 任何设置为null的值最终都将使用为该PrintQueue设置的默认值。