通用打印故障排除 - 了解打印作业的阶段

本文概述了打印作业如何经历通用打印的不同组件及其状态的更新方式。

用户打印(来自客户端)

用户选取通用打印打印机,选择所需的打印选项,然后单击“打印”按钮。 用户可以从以下任一来源打印(我们有时将其称为客户端):

  • 从 Windows OS(电脑、Windows 365、Azure 虚拟桌面等)
  • 在 Web 浏览器应用程序中,例如 OneDrive for Business、浏览器中的 Excel。
  • 其他供应商或业务线(LOB)应用程序使用 Microsoft Graph API 开发的应用程序。
  • 其他客户端(如 Mac 等)。

Windows OS

让我们从 Windows OS 获取体验示例。

用户打印在 Windows 上后,将执行以下步骤:

  1. 应用程序可以使用 Windows 标准打印对话框之一(如记事本)或其自己的打印对话框(例如Microsoft 办公室应用、Adobe Acrobat 等)。 其中任一对话框会将打印作业发送到在 Windows 上运行的 Windows 打印后台处理程序。 对于通用打印,每个打印机都使用内置的通用打印类驱动程序。 后台处理程序使用此驱动程序进一步处理作业。
    • 如果打印机与一个打印机相关联,并且安装在设备上,Windows 打印后台处理程序可以选择调用打印支持应用程序(PSA)。 PSA 通常由打印机 OEM 发布,并与其打印机型号相关联。 PSA 可能会在 Windows 上自动安装并链接到打印机。
  2. Windows 打印后台处理程序将打印作业(元数据和有效负载)上传到通用打印服务。 作业通过 HTTPS 使用 Internet 打印协议 (IPP)发送。 用于给定打印机的端口命名为 IPP-GUID。

当客户端将打印作业发送到通用打印服务时,它将执行以下操作:

  1. 验证打印作业。 这可确保打印作业的属性与打印机报告的属性匹配。 验证失败的作业将被拒绝,并将错误返回到客户端。 已成功验证的作业存储在云队列中,可在打印机的打印作业下的通用打印门户中使用。 在此阶段, 作业状态 为或 Pending Paused
    • 如果打印机已启用安全发布且作业正在等待,或者存在由第三方云应用程序触发的任务,则作业可能 Paused 处于状态。
    • 如果打印机没有安全发布或没有第三方任务,则它将直接转到 Pending 状态。 否则,只有在作业发布或任务标记为完成之后,它的状态才会从 Paused 更改为 Pending “完成”。
  2. 对于作业 Pending ,通用打印会通知相应的打印机在云队列中至少有一个打印作业正在等待。 某些打印机(和通用打印连接器)正在实时侦听这些通知,而其他打印机可能会定期轮询此类通知(例如每 30 秒)。
  1. 当打印机收到通知时,它可能会决定立即处理打印作业或等待(例如,如果打印机已经忙于打印另一个打印作业)。
  2. 打印机首先请求所有 Pending 打印作业的列表开始处理作业。 打印机可能决定逐个处理这些作业,也可以并行处理多个作业。
  3. 对于作业打印机开始处理,它首先通过确认该作业来声明作业。 这会通知通用打印,作业现在被锁定,以便由特定打印机进行处理,打印作业状态将 Processing更改为 。
  4. 打印机下载打印作业元数据和有效负载。
  5. 打印机处理打印有效负载和打印。
    • 注意:在某些情况下,打印机可能会确认作业,但可能会暂时保留作业。 在此期间,打印机可能会将作业状态更新为 Processing-Stopped 通用打印。
  6. 打印机将作业更新为以下“最终”状态之一:
    • Completed:成功打印作业时。
    • Aborted:当打印机遇到一些问题并且无法打印作业时
    • Canceled:当打印机可能有显示控制台时,用户会看到其挂起的打印作业的列表。 他们可以选择一个或全部,并使其为 Canceled

对于通过通用打印连接器注册的打印机,连接器执行与典型打印机将执行的相同步骤。 但是,它将作业从通用打印服务中继到实际打印机。

下面是连接器流中的一些差异:

  • 通用打印服务会通知连接器作业 Pending 而不是打印机。
  • 通用打印连接器确认并下载打印作业数据。 获取作业后,连接器会调用 Windows 打印 API,将作业提交到连接器上的 Windows 后台处理程序。 Windows 后台处理程序利用打印机驱动程序呈现作业,然后将作业发送到打印机。
  • 更新打印作业状态:
    • 打印机将打印作业状态发送到连接器上的 Windows 后台处理程序。
    • 连接器从 Windows 后台处理程序轮询作业状态。
    • 更新作业状态后,它会在通用打印服务中更新相同。

注意

如果给定打印机有多个 Pending 作业,连接器将连续处理这些作业(逐个处理)。 正在处理的作业将显示为 Processing,而之后在同一打印机上的打印作业将等待并具有状态 Pending。 跨不同打印机(在同一连接器上)的作业将并行处理。