ISO/IEC 29341-7-1 标准定义了UPnP打印机设备模板,为网络连接打印机提供了标准化接口。该标准实现了跨异构网络的自动发现、配置和打印作业管理,无需厂商特定的驱动程序。它是UPnP设备架构的一部分,规定了两个服务模板:用于简单打印的PrintBasic和用于高级作业控制的PrintEnhanced。
UPnP打印机设备消除了在移动和物联网平台上需要各厂商打印机驱动程序的麻烦。支持UPnP的打印机可以从网络上的任何控制点——手机、平板、笔记本电脑或物联网网关——接收打印作业,使用标准的PrintBasic或PrintEnhanced模板。
设备与服务架构
UPnP打印机设备模板定义了两个必需服务和一个可选服务:
| 服务 |
要求 |
描述 |
| PrintBasic |
必需 |
提供基本打印功能:提交打印作业、查询作业状态和获取打印机能力。适用于简单的文本和图像打印。 |
| PrintEnhanced |
必需 |
扩展PrintBasic,提供高级功能:作业排队、取消作业、打印机维护操作以及详细的作业核算。 |
| JobHistory |
可选 |
维护已完成打印作业的历史记录,包括页数、时间戳和错误代码,用于审计和使用跟踪。 |
每个服务都公开一组状态变量和操作。打印机设备还继承了标准UPnP设备属性,如友好名称、制造商、型号描述和UDN(唯一设备名称),这些属性在初始SSDP发现握手中填充。
UPnP打印机设备架构将打印服务与传输协议解耦。虽然UPnP事件通知和控制通过HTTP-UDP进行,但实际打印数据传输可以使用设备支持的任何协议(IPP、原始TCP端口9100或厂商特定的流式传输)。
PrintBasic服务——核心打印操作
PrintBasic服务提供了网络打印所需的最少操作集。其状态变量描述打印机的能力和当前状态:
- PrinterStatus — 当前运行状态:”idle”空闲、”printing”打印中、”stopped”已停止、”offline”离线、”error”错误。
- JobStatus — 最近或当前作业的状态:”pending”等待中、”processing”处理中、”completed”已完成、”cancelled”已取消、”aborted”已中止。
- JobName — 当前打印作业的人类可读名称(例如”Q4_Report.pdf”)。
- JobId — 打印机为每个接受的作业分配的唯一数字标识符。
- PagesPrinted — 当前或最近作业的总打印页数。
主要操作是SubmitJob(JobName, DataType, Data),控制点将打印数据作为base64编码字符串传递到UPnP SOAP操作中。对于大型文档,标准建议使用URI引用而非内联数据:控制点提供URI(例如http://fileserver/docs/report.pdf),打印机使用HTTP GET直接获取文档。这避免了SOAP消息大小限制并提高了可靠性。
内联数据传输方式(SOAP中的base64)仅应用于1MB以下的小型打印作业。对于较大的文档,使用URI引用方法以避免SOAP分片和超时问题。大多数企业打印机强制执行4MB的默认内联数据大小限制。
PrintEnhanced服务——高级作业管理
PrintEnhanced服务增加了复杂的作业管理能力:
- CreateJob() — 创建作业上下文并返回JobId。控制点随后通过一次或多次SendData(JobId, DataChunk)调用发送文档数据,支持大型文档的流式传输。
- CancelJob(JobId) — 取消排队中或进行中的作业。打印机立即释放占用的资源。
- PauseJob() / ResumeJob() — 临时暂停和恢复当前作业,便于操作员干预(如添加纸张)。
- GetJobAttributes(JobId) — 返回详细的作业元数据:提交时间、完成时间、页数、文档格式、所有者和任何错误条件。
该服务还公开描述物理打印机能力的PrinterAttributes状态变量:支持的介质尺寸(A4、Letter、Legal)、彩色能力、双面支持、分辨率(dpi)、进纸盒配置和出纸槽容量。控制点使用这些属性自动选择适当的打印设置。
使用PrintEnhanced服务的流式传输模式(CreateJob + 多次SendData调用)时,打印机必须实施作业超时机制。如果在5分钟内(可配置)未收到后续SendData调用,作业应自动取消,部分接收的数据应丢弃。这防止了孤立作业无限期占用打印机内存。
网络部署最佳实践
发现与命名。将UPnP友好名称配置为包含打印机位置(例如”HP LaserJet — 3楼东侧”)。这有助于用户在多个打印机的环境中识别正确的打印机。UDN必须在各电源周期之间保持稳定;在初始配置期间将其存储在NVRAM中。
安全考量。UPnP打印机设备应实施子网级访问控制,并在可能的情况下使用基于TLS的事件通知以防止打印作业拦截。对于敏感文档,禁用内联数据传输方式,强制使用基于HTTPS端点的URI提交。
常见问题
问:UPnP打印机设备能否同时支持PrintBasic和PrintEnhanced?
答:可以,这也是推荐的配置。PrintBasic为简单客户端(例如打印状态标签的物联网传感器)提供广泛兼容性,而PrintEnhanced为工作站客户端实现完整的作业管理功能。
问:UPnP打印机设备如何处理多个同时发生的打印作业?
答:PrintEnhanced服务包含一个作业队列。作业按先进先出的顺序处理。JobStatus变量单独反映每个排队作业的状态。控制点可以使用JobQueueSize状态变量查询队列深度。
问:标准要求支持哪些数据格式?
答:标准强制要求支持text/plain和application/postscript。支持image/png、image/jpeg、application/pdf和application/octet-stream(打印机特定)是可选的,但已被广泛实现。
问:打印机能否在作业完成时通知控制点?
答:可以。JobStatus变量支持事件通知。控制点订阅JobStatus变更事件,当作业转换为”completed”、”cancelled”或”aborted”状态时立即收到通知。