我支持打印 XPS 并使用 PrintTickets 修改打印机设置的 C# 应用程序。它是WPF应用程序,而不是 Windows 窗体应用程序,因此任何涉及 PrintDocument 或 PrintSettings 的答案都不相关。
我见过的大多数打印机驱动程序都会生成一个PrintCapabilities
包含psk:JobDuplexAllDocumentsContiguously
. 相关PrintCapabilities.DuplexingCapability
对象包含零个以上的项目,并且PrintTicket.Duplexing
成员为非空。
我现在已经看到不止一个打印机驱动程序返回 PrintTicket 和 PrintCapabilities XML 使用psk:DocumentDuplex
关键字而不是psk:JobDuplexAllDocumentsContiguously
. 问题是,一旦 XML 被反序列化为相应的 .NET 对象,该PrintCapabilites.DuplexingCapability
对象包含零项并且PrintTicket.Duplexing
成员为空。打印机绝对可以进行双面打印——只是它没有像我预期的那样报告它的功能。
如果我为 PrintTicket 的 xml 分配一个值,PrintTicket.Duplexing
则包含psk:JobDuplexAllDocumentsContiguously
驱动程序忽略的值。
我看不到如何修改PrintTicket
对象以便相关的 XML 提及psk:DocumentDuplex
。谁能建议我应该怎么做?
编辑
我刚刚在PrintTicket.Duplexing的 MS 文档中发现了一个重要说明。笔记说:
此属性对应于 Print Schema 的 JobDuplexAllDocumentsContiguously关键字,而不是DocumentDuplex 关键字。
这准确地解释了我所看到的,但我觉得这令人费解。为什么 MS 会在 PrintTicket 模式中放置两个双工关键字,然后编写一个只实现其中一个的类?
重申最初的问题 - 我可以做些什么来修改PrintTicket
对象行为以便它理解psk:DocumentDuplex
?