通过 System.Printing 框架(主要类是 PrintQueue、PrintTicket 和 PrinterCapabilities)做一些关于控制打印的工作。就像我最近一直在做的大多数事情一样,关于它的信息太少了。我希望在这个问题中汇编一些好的信息来帮助充实这个主题。
PrintTickets 让开发人员可以很好地处理最常见的打印配置设置。这很幸运,因为我不想用旧的 DEVMODE 方式来做(你可以将 DEVMODE 二进制流与 PrintTickets 相互转换,这很方便!)。
问题是有很多打印机,每一个都有独特的配置。这些不属于为 PrintTickets 创建的漂亮属性和枚举。如果您必须配置其设置超出此界面的打印机,则必须将您的 PrintTicket 序列化为 xml 并在那里进行修改。
当您使用 PrintTicket xml 时,您的生活由三个或更多模式支配:两个由 Microsoft 和一个或多个由打印机制造商。两个 MS 模式是
- PrintSchemaFramework http://schemas.microsoft.com/windows/2003/08/printing/printschemaframework
- PrintSchemaKeywords http://schemas.microsoft.com/windows/2003/08/printing/printschemakeywords
我在处理原始 xml 时遇到的第一个问题是我找不到任何涵盖这些模式的 XSD。
有人知道我在哪里可以获得这些模式的 XSD 吗?
我遇到的第二个大问题是将用户输入映射到 PrintTicket xml。最理想的情况是,我想接受用户的输入,比如“Tray 3”,然后通过 PrintCapabilities 进行映射,以确定为该功能设置的选项的值。打印功能的文档有些不清楚,我担心如果我做得不对,它会充满边缘情况,会回来咬我。
有没有人有任何修改 PrintTicket XML 的好例子?
这是这个wiki的一个很好的起点......
问题1的更新:
向我从 2005 年的 WinHEC PPT 中获得的地址发送了一封电子邮件,并得到了 Windows 体验 - 文档和打印的项目经理 Justin Hutchings 的实际回复(很酷,不是吗?):
将要,
打印模式命名空间没有 XSD。您应该查看 Print Schema Specification 1.0 并使用它来验证您的一致性。http://www.microsoft.com/whdc/xps/downloads.mspx
我们还在 PrintVerifier 中内置了 PrintSchema 验证。有关获取和配置 Print Verifier 的更多信息,请访问以下网址: