本主题不是最新的。 有关最新信息,请参阅 打印架构规范。
特定于设备的 PrintTicket 以特定设备为目标,因此通常不能跨多个设备移植。
创建特定于设备的 PrintTicket 时,应使用以下列表中显示的步骤。
获取仅包含设备相关功能实例的 PrintCapabilities 文档。 请求默认 PrintCapabilities 文档。 这不需要指定输入 PrintTicket,因为用于构造 PrintTicket 的设备属性 (Feature 和 Option 实例和参数) 独立于配置。
创建包含 PrintTicket 根的空 XML 文档。 将命名空间前缀分配给打印架构命名空间,并为 PrintTicket 将使用的所有其他命名空间分配前缀。 指定 PrintTicket 架构版本。
可以在 PrintTicket 中为 PrintCapabilities 文档中报告的每个 Feature 和 ParameterDef 实例定义设置,或者仅定义你感兴趣的设置。 如果向 PrintTicket 接口显示部分 PrintTicket,则会在 PrintTicket 验证期间自动为省略的 Feature 和 ParameterDef 实例提供默认值。
检查 PrintCapabilities 文档中的功能实例,并确定要在 PrintTicket 中定义哪些实例。 将这些功能实例添加到 PrintTicket,但不要将功能实例的内容传输到 PrintTicket。 如果传输子功能,还必须传输父功能,并且父子关系必须保留在 PrintTicket 中。
对于传输的每个功能,确定哪些 Option 实例适用于 PrintTicket。 传输 PrintCapabilities 文档中定义的整个 Option,然后删除存在的任何 Property 实例。 Property 实例在 PrintCapabilities 文档中使用,但在 PrintTicket 中不起作用。 保留所有 ScoredProperty 实例,确保保留其位置;它们是 Option 定义的固有部分。
还可以将属性实例添加到任何 ScoredProperty 实例。 仅当 PrintTicket 提供程序显式支持属性实例的使用时,才使用属性实例。 每个提供程序都应记录所有受支持属性实例的用途和用法。 请注意,在验证期间,将去除 Option 实例中包含的任何 Property 实例,除非目标 PrintCapabilities 或 PrintTicket 提供程序识别该属性的命名空间,并且 PrintCapabilities 文档中找到了一个候选 Option,该文档的 ScoredProperty 实例与引用 Option 中定义的实例完全匹配。
如果打印架构关键字为特定功能将 SelectionType 属性设置为 PickMany,则可以为该功能选择多个选项,前提是指定为 IdentityOption 的选项不是所选选项之一。 打印架构中的 IdentityOption 与 Postscript PPD 文件和 Unidrv GPD 文件中的 None 选项具有相同的效果;它用作 no-op。
检查 PrintCapabilities 文档,了解应在 PrintTicket 中设置的 ParameterDef 实例。 对于每个此类 ParameterDef 实例,选择要在 PrintTicket 的 ParameterInit 实例中使用的值。 此值必须是正确的数据类型,并且必须位于 ParameterDef 实例中定义的范围内,并且必须满足 ParameterDef 实例中指定的所有其他要求。 使用 ParameterInit 实例将参数初始化为所选的值。
检查 PrintTicket 中显示的每个 Option 实例的内容,了解 ParameterRef 实例的出现次数。 如果 PrintTicket 中尚未显示相应的 ParameterInit 实例,请按照上一步在 PrintTicket 中创建 ParameterInit 实例。 此参数实例的用途是初始化 ParameterRef 实例引用的参数。
请记住,约束冲突可能会阻止设备应用你在 PrintTicket 中指定的配置。 如有必要,验证过程会将 PrintTicket 中定义的配置修改为无冲突的配置。
检查 PrintTicket 中必须存在的属性实例的打印架构关键字。 将属性实例添加到所需的每个 PrintTicket,并使用 Value 元素类型为其提供合适的值。 确保属性实例正确位于 PrintTicket 中。
检查 PrintTicket 架构中的可选属性实例。 如果 PrintTicket 中应存在任何此类属性实例,请在 PrintTicket 中创建它们。
还可以在根级别添加私有定义的 Property 实例,或者添加到任何 Feature、Option 或 Property 实例。 但请注意,除非目标 PrintCapabilities 或 PrintTicket 提供程序识别它们所属的命名空间,否则这些私有定义的 Property 实例在验证期间将被剥离。 此外,除非 PrintCapabilities 文档包含一个完全匹配的 Option,否则在验证期间,选项实例中的任何位置都会被去除。 如果一个 Option 实例中的每个 ScoredProperty 在一个 Option 实例中都有相应的 ScoredProperty,并且 ScoredProperty 实例的值相同,则两个 Option 实例是完美的匹配项。 有关已识别的专用属性实例及其用法的列表,请参阅 PrintTicket 提供程序的专用架构。
同一元素类型的子元素不能嵌套到超过 10 个元素的深度。 此规则独立应用于可定义的每种类型的元素。
注意
PrintTicket XML 内容必须使用 UTF-8 或 UTF-16 进行编码。
相关主题