能否通过Graph API使用应用身份验证向共享Universal Print打印机打印文档
关于通过应用身份验证调用Graph API操作Universal Print的解答
可以通过Microsoft Graph API的应用权限模式,完全无需用户交互,使用客户端密钥或客户端证书完成向共享Universal Print打印机提交打印任务的操作,具体实现要求和流程如下:
前置配置要求
- 在Azure AD中注册应用程序,为应用分配
PrintJob.ReadWrite.All的应用权限,必须由全局管理员或Universal Print管理员完成该权限的管理员同意操作,不能使用委托权限实现该场景 - 进入Universal Print管理中心,在目标共享打印机的访问权限配置中,将你注册的应用添加至允许访问列表,否则调用接口时会返回403权限不足错误
核心实现步骤
- 首先获取应用身份的访问令牌,选择客户端密钥或客户端证书的验证方式均可,请求令牌时scope固定填写
https://graph.microsoft.com/.default - 调用接口创建打印任务,请求方法和路径如下:
POST https://graph.microsoft.com/v1.0/print/shares/{你的打印机共享ID}/jobs
可在请求体内自定义打印配置,比如打印份数、纸张方向、尺寸等参数 - 打印任务创建成功后,会返回对应的
jobId和关联的文档ID,调用文档上传接口提交需要打印的文件二进制内容即可 - 文档上传完成后调用任务启动接口触发实际打印,请求路径如下:
POST https://graph.microsoft.com/v1.0/print/shares/{你的打印机共享ID}/jobs/{刚才返回的jobId}/start
常见注意事项
- 该能力已经在Graph API v1.0版本正式支持,无需调用beta版本接口
- 单次上传的打印文件最大支持64MB,超过该大小需要使用分片上传逻辑
- 可以通过打印任务查询接口轮询任务状态,确认打印是否成功,或者排查打印失败的具体原因
内容的提问来源于stack exchange,提问作者Imran
相关产品推荐
相关产品推荐

