我有一个 C# WinForms 应用程序。用户上传 .XPS 文件并指定一些打印机设置(份数、纸盒等)。
程序需要使用这些设置以编程方式打印文档。也就是说,不能有用于打印的用户交互。
我可以使用 System.Printing AddJob 方法来接近。 (https://learn.microsoft.com/en-us/dotnet/framework/wpf/advanced/how-to-programmatically-print-xps-files https://learn.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 https://msdn.microsoft.com/en-us/library/system.drawing.printing.printdocument.printpage(v=vs.110).aspx,但看不到如何获取 PrintPageEventHandler 来呈现 XPS 文档。
关于我如何继续的任何想法?帮助将不胜感激!
C# .NET 4.5
UPDATE:
根据下面的答案,我可以在添加作业时发送 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 的版本 https://msdn.microsoft.com/en-us/library/jj205516(v=vs.110).aspx。您将需要使用用户的设置创建一个新的 PrintTicket - 任何设置为 null 的值最终都将使用为该 PrintQueue 设置的默认值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)