0

我支持打印 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

4

1 回答 1

0

C# 双工

您需要设置对象的Duplex属性PrinterSettings

注意:您可以使用该CanDuplex属性来检查打印机是否支持双面打印。

来源


XPS 双面打印

XPS这应该可以设置Duplexinga 的属性PrintTicket

文档和打印概述包含双面打印的示例代码。(只需在页面上搜索)duplex

来源

于 2018-08-29T11:55:58.753 回答