ISO/IEC 29341-7-2 — UPnP 打印机设备 — 基本服务 v2

打印机基本服务 v2 — 作业提交、数据传输协议与作业工单模板

UPnP打印机基本服务v2概述

ISO/IEC 29341-7-2规定了打印机基本服务v2,这是UPnP打印机设备v2架构的基础服务,负责打印作业提交。作为客户端应用程序向网络打印机发送文档的入口点,基本服务定义了CreateJob动作,该动作接受打印数据、作业工单参数和文档处理指令,并返回可在后续作业管理中使用的JobID。该服务由URN标识。

基本服务v2使用基于拉取的数据传输模型:客户端调用CreateJob后,使用标准HTTP PUT或POST将打印数据上传到服务提供的URL。这解耦了作业提交与数据传输,支持客户端可以独立提交作业和传输数据的异步工作流。

CreateJob动作接受一个JobTicket参数——这是一个结构化的XML文档,描述打印作业的处理要求。作业工单指定文档格式、介质尺寸、介质类型、分辨率、双面模式、色彩模式、装订选项、页面方向、进纸盘选择、出纸槽选择和文档名称。服务根据打印机能力验证作业工单,如果打印机不支持任何请求的能力,则返回详细的错误响应。

作业工单参数 类型 示例值 必填
DocumentFormat 字符串 (MIME) application/pdf, image/jpeg, text/plain
CopyCount ui2 1–9999
MediaSize 字符串 iso-a4, na-letter, iso-a3, jis-b5
MediaType 字符串 plain, glossy, transparency, envelopes
Resolution 字符串 600dpi, 1200dpi, 2400dpi
Duplex 字符串 one-sided, two-sided-long-edge, two-sided-short-edge
ColorMode 字符串 monochrome, grayscale, color
JobPriority ui1 1–100 (默认 50)

数据传输与作业提交流程

基本服务v2实现了一个两阶段作业提交流程。第一阶段,客户端使用作业工单参数调用CreateJob。打印机验证工单,为作业预留资源,并返回包含JobID、DataSinkURL和估计最大数据大小的作业提交响应。第二阶段,客户端使用HTTP PUT或POST将打印数据上传到DataSinkURL。打印机确认接收并通过其渲染管线开始处理作业。

客户端应遵循打印机返回的Capabilities.MaxDataSize限制。尝试上传超过此限制的打印作业将导致打印机返回HTTP 413 Payload Too Large错误。对于大型打印作业,客户端应降低分辨率、将作业拆分为多个较小的提交或与打印机协商大作业处理。

服务还定义了GetCapabilities动作,返回打印机支持的功能和约束的全面描述。这包括支持的文档格式、介质尺寸、介质类型、分辨率范围、双面模式、色彩能力、装订选项、进纸盘配置、出纸槽配置和设备特定约束。能力文档结构化为XML模式,控制点可以解析以动态生成仅显示支持选项的打印对话框。

GetCapabilities动作对于移动打印应用尤其强大,因为客户端设备事先不知道打印机的功能特性。通过在选择打印选项前查询能力,移动打印客户端可以动态构建适应特定打印机的用户界面——仅在打印机支持双面打印时显示双面选项,如果未安装订书机则禁用装订选项,根据打印机配置选择默认纸张尺寸而非假定Letter或A4。

基本服务v2还引入了对打印作业模板的支持——存储在打印机上的预定义作业工单配置文件,客户端可以按名称引用而无需单独指定每个参数。打印机可以存储多个模板,每个模板包含一套完整的处理指令。客户端调用CreateJobFromTemplate指定模板名称并可选择覆盖单个参数。这简化了不需要对每个打印参数进行精细控制的客户的提交协议,并使IT管理员能够集中定义标准化打印策略。

安全、认证与错误处理

基本服务v2的安全考虑包括作业提交认证、数据完整性验证和打印数据机密性。服务支持限制哪些客户端可以提交作业的访问控制列表。数据完整性通过可选的Content-MD5头部确保。对于机密性,当打印机配置了TLS证书时,服务支持HTTPS URL用于DataSinkURL,加密传输中的打印数据。规范还定义了管理操作的最低认证要求。

当基本服务v2部署时没有TLS加密时,打印数据——包括可能敏感的文档——以明文形式通过网络传输。在企业环境中,打印机与客户端工作站位于同一网段时,这会造成重大数据泄露风险。强烈建议实施网络分段、打印机VLAN隔离和打印服务强制TLS的安全实践。

基本服务v2的错误处理模型区分作业级错误和服务级错误。作业级错误从CreateJob返回结构化错误响应,允许客户端调整参数并重试。服务级错误通过状态服务的ErrorStatus变量传达并事件通知到订阅的控制点。基本服务本身在打印机离线时不排队作业——它返回服务级错误,由客户端负责稍后重试。这种设计确保打印提交流程保持简单,排队逻辑集中在客户端或打印服务器而非分布到各打印机。

问:基本服务v2通常支持哪些文档格式?

答:最低要求格式是application/pdf和image/tiff。大多数实现还支持image/jpeg、text/plain、application/postscript和application/vnd.hp-PCL。GetCapabilities动作返回特定打印机支持的完整格式列表。服务不执行格式转换——客户端必须确保文档格式受支持。

问:两阶段提交流程如何处理网络中断?

答:CreateJob动作预留一个带有时间限制的DataSinkURL的作业槽。如果数据上传中断,客户端可以使用HTTP Range头恢复(如果打印机支持部分上传)。如果在数据完全接收前超时到期,打印机释放预留并取消作业。客户端随后必须提交新的CreateJob请求。

问:基本服务v2能否处理加密的打印数据?

答:服务本身不定义打印数据加密——它依赖传输层安全来加密传输中的数据。对于打印机假脱机存储上的静态数据加密,那是打印机实现关注的问题,不在服务规范范围内。

问:基本服务v2中作业工单模板的作用是什么?

答:作业工单模板允许IT管理员预定义标准打印配置——例如300dpi黑白单面打印的”草稿”模板,或1200dpi彩色双面打印的”演示”模板。用户按名称选择模板,简化了打印体验并强制执行组织的打印策略。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注