# 打印接口

通过打印接口可以获得当前打印机的能力、完成打印任务相关操作。

提示

调用接口前请先阅读 『打印功能概览』 章节,了解打印任务的整体流程。

# 获取打印机能力接口 API

获取当前打印机的能力信息。

GET /api/print/capability

  • 请求参数(Query String):
名称 类型 必选 说明
client_uuid String 设备UUID
  • 响应参数(JSON Body):
名称 类型 必选 说明
code Integer 状态码
msg String 状态描述
data Object 响应数据
data.make String 打印机厂家名称
data.model String 打印机型号
data.support_strict Bool 是否支持严格模式
data.color_mode String Array 支持的色彩模式
详见 参数常量
data.media_sizes Object Array 支持的介质尺寸
data.media_sizes[Index].media_size String 介质尺寸名称
详见 参数常量
data.media_sizes[Index].media_types Object Array 支持的介质类型
data.media_sizes[Index].media_types[Index].media_type String 介质类型名称
详见 参数常量
data.media_sizes[Index].media_types[Index].duplex String Array 支持的双面打印模式
详见 参数常量
data.media_sizes[Index].media_types[Index].borderless Bool 是否支持无边距打印
data.media_sizes[Index].media_types[Index].quality String Array 支持的打印质量模式
详见 参数常量
data.media_sizes[Index].media_types[Index].input_slot String Array 支持的进纸器模式
详见 参数常量

提示

  • 色彩模式是打印机的属性,位于根节点

  • 打印机一般支持多种介质尺寸,其中每个介质尺寸支持多种介质类型,每个介质类型有不同的能力参数

  • 成功示例:

HTTP Status 200

{
  "code": 0,
  "msg": "ok",
  "data": {
    "make": "EPSON",
    "model": "M1170 Series",
    "support_strict": true,
    "color_mode": [
      "KIC_CM_MONO"
    ],
    "media_sizes": [
      {
        "media_size": "KIC_MS_A4",
        "media_types": [
          {
            "media_type": "KIC_MT_PLAIN",
            "duplex": [
              "KIC_DP_NONE",
              "KIC_DP_NOTUMBLE",
              "KIC_DP_TUMBLE"
            ],
            "borderless": false,
            "quality": [
              "KIC_QU_HIGH",
              "KIC_QU_NORMAL"
            ],
            "input_slot": [
              "KIC_IS_AUTO",
              "KIC_IS_CASS1",
              "KIC_IS_REAR"
            ]
          },
          {
            "media_type": "KIC_MT_PHOTO",
            "duplex": [
              "KIC_DP_NONE"
            ],
            "borderless": false,
            "quality": [
              "KIC_QU_HIGH",
              "KIC_QU_NORMAL"
            ]
          }
        ]
      },
      ...
    ]
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
  • 错误示例:

HTTP Status 200

{
  "code": 30302,
  "msg": "不支持的打印机型号",
  "data": null
}
1
2
3
4
5

查看全部状态码

# 创建打印任务接口 API

注意

  • 调用时功夫智盒设备必须是在线状态

  • 已正确连接打印机、打印机已开机并状态正常、打印机墨水或硒鼓充足、纸张充足并正确摆放

  • PDF文件的页面尺寸需要与media_size一致

POST /api/print/create

  • 请求参数(JSON Body):
名称 类型 必选 默认值 说明
client_uuid String 设备UUID
file_type String 打印文件类型。可选值:pdf、jpg
file_url String 打印文件的URL
(最长200个字符,file_url 与 file_content 必须二选一)
file_content String 打印文件的内容 Base64编码
(file_url 与 file_content 必须二选一)
file_check_sum String 文件的MD5 Check Sum值。
如非空,则会在打印前校验(如启用加密,取加密后文件的MD5值)。
不传即不校验。
options Object 打印任务自定义选项
options.callback_url String 打印任务的回调通知地址,最长200个字符
options.direct Bool false 是否开启直传模式 详见 直传模式
options.strict Bool false 是否开启严格模式 详见 严格模式
options.encrypt Bool false 是否启用数据加密
参见 『KHES 加密』
options.cipher String 秘钥加密后的密文
如开启数据加密则此字段必传
options.media_size String KIC_MS_A4 介质尺寸
参见 获取打印机能力接口参数常量
options.media_type String KIC_MT_PLAIN 介质类型
参见 获取打印机能力接口参数常量
options.color_mode String 色彩模式
参见 获取打印机能力接口参数常量
options.borderless Bool false 是否开启无边距打印
参见 获取打印机能力接口
options.quality String 打印质量
参见 获取打印机能力接口参数常量
options.duplex String 双面打印模式
参见 获取打印机能力接口参数常量
options.input_slot String 进纸器模式
参见 获取打印机能力接口参数常量
options.number Integer 1 打印份数 详见 打印顺序说明
options.page_ranges String 打印范围(如:1,3,5 1-10 1-3,5,6-10 )
options.reverse Bool true 是否倒序打印 详见 打印顺序说明
(如打印机出纸时正面朝下,关闭倒序打印可以按正确的顺序打印)
options.collate Bool true 是否逐份打印 详见 打印顺序说明
详见 打印顺序说明
  • 响应参数(JSON Body):
名称 类型 必选 说明
code Integer 状态码
msg String 状态描述
data Object 响应数据
data.uuid String 此次打印任务的UUID (收到响应后请尽快保存下来,打印事件回调通知中会携带此UUID)
data.expires_at Integer 此次打印任务的过期时间(Unix时间戳,单位:秒。 达到过期时间之后,打印任务会自动销毁,任务信息无法查询,一般为24小时之后
  • 成功示例:

HTTP Status 200

{
  "code": 0,
  "msg": "ok",
  "data": {
    "expires_at": 1629119239,
    "uuid": "4153814d-xxxx-xxxx-xxxx-0bd9a88d5e7a"
  }
}
1
2
3
4
5
6
7
8
  • 失败示例:

HTTP Status 200

{
  "code": 30301,
  "msg": "打印机未连接",
  "data": null
}
1
2
3
4
5

查看全部状态码

# 主动取消打印接口 API

提示

取消打印会取消终端当前已接收和正在打印的打印任务,并清空打印队列

POST /api/print/cancel

  • 请求参数(JSON Body):
名称 类型 必选 说明
client_uuid String 设备UUID
  • 响应参数(JSON Body):
名称 类型 必选 说明
code Integer 状态码
msg String 状态描述
data Null 响应数据(无)
  • 成功示例:

HTTP Status 200

{
  "code": 0,
  "msg": "ok",
  "data": null
}
1
2
3
4
5

查看全部状态码

# 查询打印任务接口 API

POST /api/print/info

  • 请求参数(JSON Body):
名称 类型 必选 说明
client_uuid String 设备UUID
print_uuid String 打印任务UUID
  • 响应参数(JSON Body):
名称 类型 必选 说明
code Integer 状态码
msg String 状态描述
data Object 响应数据
data.action_ack Bool 终端是否已接收
data.action_ack_at Integer 终端接收时的Unix时间戳(单位:毫秒)
data.started Bool 打印开始是否已开始
data.started_at Integer 打印开始时的Unix时间戳(单位:毫秒)
data.finished Bool 是否已结束打印
data.finished_at Integer 结束打印时的Unix时间戳(单位:毫秒)
data.file_size Integer 文件大小(单位:KB)
data.download_spent Integer 终端下载文件耗时(单位:秒)
data.error_code Integer 打印错误码,详见 打印错误码
data.created_at Integer 打印任务创建时的Unix时间戳(单位:毫秒)
data.expires_at Integer 此次打印任务的过期时间(Unix时间戳,单位:秒。 达到过期时间之后,打印任务会自动销毁,任务信息无法查询,一般为24小时之后
data.pages Integer 预估页数 (根据文件与份数设置的评估值,非实际打印页数,在打印开始时有值)
data.printed_pages Integer 使用严格模式时的实际打印面数 (只有在严格模式打印结束时有值)
注意:此值为打印面数,如打印的文档页数为3页并启用双面打印模式,此时值为4
(空白面也会计算,当启用双面打印时,printed_pages/2 即可得到实际使用的纸张数量)
  • 成功示例:

HTTP Status 200

{
  "code": 0,
  "msg": "ok",
  "data": {
    "action_ack": true,
    "action_ack_at": 1632366541630,
    "created_at": 1632366540940,
    "download_spent": 1,
    "error_code": 0,
    "expires_at": 1632452940,
    "file_size": 588,
    "finished": true,
    "finished_at": 1632366673254,
    "pages": 9,
    "printed_pages": 9,
    "started": true,
    "started_at": 1632366544625
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

查看全部状态码