需要帮助通过XML修改PrintTickets

时间:2009-01-22 20:00:40

标签: .net xsd system.printing

通过System.Printing框架(主要类是PrintQueue,PrintTicket和PrinterCapabilities)进行一些控制打印的工作。就像我最近一直在做的大多数事情一样,关于它的信息很少。我希望在这个问题中汇总一些好的信息,以帮助充实这个主题。

PrintTickets使开发人员能够很好地处理大多数常见的打印配置设置。这是幸运的,因为我不想用旧的DEVMODE方式(你可以将DEVMODE二进制流转换为PrintTickets,这很方便!)。

问题是有很多打印机,每个打印机都有独特的配置。这些不属于为PrintTicket创建的不错的属性和枚举。如果必须配置其设置超出此界面的打印机,则必须将PrintTicket序列化为xml并在那里进行修改。

当您使用PrintTicket xml时,您的生活由三个或更多模式决定:两个由Microsoft和一个或多个打印机制造商。

是两个MS模式

我处理raw xml的第一个问题是我找不到任何覆盖这些模式的XSD。

有谁知道我可以在哪里获得这些架构的XSD?

我遇到的第二个大问题是将用户输入映射到PrintTicket xml。最理想的情况是,我想获取用户的输入,比如说“Tray 3”,然后通过PrintCapabilities将其映射,以确定为该功能设置的选项的值。打印功能的文档有点不清楚,我担心如果我做得不对,它会充满边缘的情况会再次出现并咬我。

有没有人有任何修改PrintTicket XML的好例子?

这是这个维基的一个很好的起点...


问题1的更新:

发送电子邮件给我从2005年的WinHEC PPT获得的地址,得到了Windows体验 - 文档和打印项目经理Justin Hutchings的实际回复(很酷,没有?):

威尔

Print Schema命名空间没有XSD。您应该查看Print Schema Specification 1.0并使用它验证您的一致性。 http://www.microsoft.com/whdc/xps/downloads.mspx

我们还在PrintVerifier中内置了PrintSchema验证。有关获取和配置Print Verifier的更多信息,请访问以下网址:

3 个答案:

答案 0 :(得分:1)

您似乎正在尝试做的事情在大纲形式中描述:

http://msdn.microsoft.com/en-us/library/aa970573.aspx#ExtendingthePrintTicketClass

答案 1 :(得分:1)

查看有关选择托盘的主题:

http://social.msdn.microsoft.com/forums/en-US/windowsxps/thread/f5859148-26f1-4e89-949c-180413bcc898/

CAnderson和Jo0815正在询问PrintQueue的PrintCapabilities,以询问与输入箱相关的功能。之后,他们将DefaultPrintTicket中的XML加载到XMLDocument中以插入节点以指定bin,将XMLDocument写入流,然后从该流构建新的PrintTicket。 (与Procedure for Creating a WholePrintTicket Class中描述的连接和删除重复的过程相比,可能更直接的方法。)

相同的技术可以应用于标准PrintTicket未公开的其他功能。

答案 2 :(得分:0)

现在在微软的网站

上有一个打印模式规范(日期为2013年7月28日)

http://msdn.microsoft.com/en-us/windows/hardware/gg463385.aspx

这有300多个规范,还包括http://schemas.microsoft.com/windows/2003/08/printing/printschemaframework

的架构