admin管理员组文章数量:1599265
需求:打开弹窗后,可以在下拉框中选取本机的打印机信息,选择后根据相关参数去打印面单。
(注:需要先在电脑上手动连接上打印机,成功后,在通过 webSocket 连接服务端,获取本地打印机列表。)
created(){
// 一进页面连接服务
this.initWebSocket()
}
method:{
initWebSocket(){
//如果是https的话,端口是13529
this.websocket = new WebSocket("ws://localhost:13528");
this.websocket.onopen = this.websocketonopen;
this.websocket.onerror = this.websocketonerror;
this.websocket.onmessage = this.websocketonmessage;
},
// 打开连接
websocketonopen(){
this.$message.success("打印组件已开启");
let data = {
cmd: "getPrinters",
requestID: getUid, //用户id
version: "1.0",
}
//发送获取打印机列表命令
this.websocket.send(JSON.stringify(data));
},
// websocket连接错误
websocketonerror(e) {
this.$message.error("打印组件未开启,请确认打印组件是否开启");
},
// websocket接收信息
websocketonmessage(e) {
//接收数据;
const result = JSON.parse(e.data);
//收到打印机列表数据
if (result.cmd == "getPrinters") {
this.printerList = result.printers; // 本机连接的打印机列表信息
}
// 打印成功处理逻辑
if (result.status == "completeSuccess") {
this.$message.success("打印成功");
// 调接口,刷新打印次数
updatePrintCount({
ids: this.ids,
printCount: this.dialogForm.printNum,
}).then((res) => {
this.resetTable = !this.resetTable; // 刷新主页面接口的标识符
});
}
},
}
请求协议格式说明:
字段名 | 类型 | 说明 | 是否必须 |
cmd | string | 请求的命令名称: command getPrinters: 请求打印机列表协议 getPrinterConfig: 请求打印机配置协议 printerConfig:弹窗模式配置打印机协议 resetPrinterPreferences:重置打印机配置协议 print:发送打印/预览数据协议 getTaskStatus:请求任务打印状态协议 getDocumentStatus:获取文档打印状态协议 notifyPrintResult:打印结果通知协议 getGlobalConfig:获取全局配置信息 setGlobalConfig:设置全局配置信息 getAgentInfo:获取打印组件版本信息 | 是 |
requestID | string | 请求的ID,用于唯一标识每个请求,每个客户端自己保证生成唯一ID,如UUID | 是 |
version | string | 协议当前版本,当前为“1.0” | 是 |
printer | string | 命令名称为 resetPrinterPreferences 时,生效 | 是 |
notifyOnTaskFailure | bol | 命令名称为 setGlobalConfig 时,生效 打印任务失败时是否需要通知(弹出对话框提醒用户打印失败原因并默认暂停当前打印机的打印),true为需要,false为不需要 | |
documentIDs | array | 文档的唯一ID数组 | 是 |
taskID | json数组 | 命令名称为 getTaskStatus 生效 打印机任务ID列表 | 是 |
task | Object | 命令名称为 print 时生效 | 是 |
字段名 | 类型 | 说明 | 是否必须 |
---|---|---|---|
taskID | string | 打印机任务ID,每个打印任务会分配不同的且唯一的ID | 是 |
notifyType | array | 打印通知类型:“render”, “print” [“render”] : 仅渲染响应 notify [“print”] : 仅出纸响应 notify “render”, “print” : 渲染完成会响应 notify && 出纸完成后会响应 notify [] : 不允许 注:如果notifyType没有指定,默认为[“render”, “print”] | 否 |
preview | bool | 是否预览.true为预览,false为打印 | 是 |
previewType | string | 属性取值“pdf” or “image” 预览模式,是以pdf还是image方式预览,二选一,此属性不是必选,默认以pdf预览。 | 否 |
firstDocumentNumber | int | task 起始 document 序号 | 否 |
totalDocumentCount | int | task document 总数 | 否 |
printer | string | 打印机名,如果为空,会使用默认打印机 | 否 |
templateURL | string | 模板文件url | 是 |
signature | string | 模板与数据的签名 | 否 |
documents | array | 文档数组,每个数据表示一页 | 是 |
documentID | string | 文档的唯一ID,对于菜鸟标准面单来讲,就是面单号;如果是自定义模板,需要保证唯一 | 是 |
data | Json Object | 模板需要的打印数据 | 是 |
响应协议格式说明:
字段名 | 类型 | 说明 | 是否必须 |
cmd | string | 响应的命令名称: command getPrinters: 响应打印机列表协议 getPrinterConfig: 响应打印机配置协议 printerConfig:弹窗模式配置打印机协议 resetPrinterPreferences:重置打印机配置协议 print:发送打印/预览数据协议 getTaskStatus:响应任务打印状态协议 getDocumentStatus:响应文档打印状态协议 notifyPrintResult:打印结果通知协议 getGlobalConfig:获取全局配置信息 setGlobalConfig:设置全局配置信息 getAgentInfo:响应打印组件版本信息 | 是 |
requestID | string | 响应的ID,用于唯一标识每个请求,每个客户端自己保证生成唯一ID,如UUID | 是 |
version | string | 响应协议的当前版本,当前为“1.0” | 是 |
defaultPrinter | string | 默认打印机 | 是 |
printers | Array | 响应打印列表 name(string):打印机名称 status(string):打印机状态 type(string):打印机类型 (thermal:为热敏打印机; other:为除热敏打印机以外的其他类型) | 是 |
printer | Object | 要配置的打印机 name(string):打印机名称 status(string):打印机状态 enable 可用 / disable 不可用 msg(string):错误信息 needTopLogo(bool):是否需要模板上联的快递logo,true为需要,false为不需要 needBottomLogo(bool):是否需要模板下联的快递logo,true为需要,false为不需要 horizontalOffset(float):水平偏移量,1 verticalOffset(float):垂直偏移量,2 forceNoPageMargins(bool):强制设置页面无空边,true为强制设置页面无空边,false为由打印机驱动决定 paperSize(object):打印机纸张的宽度和高度,单位是毫米,整形值 | 是 |
name | string | 打印机的名字 | 是 |
status | string | 打印机状态 : 命令名称为 setGlobalConfig/getDocumentStatus 时 返回 succse/failed success 成功 failed 失败 | 是 |
msg | string | 错误信息 | 是 |
type | string | 打印机类型 : thermal:为热敏打印机; other:为除热敏打印机以外的其他类型 | 是 |
taskID | string | 命令名称为 getTaskStatus/print 时 返回 打印机任务ID,每个打印任务会分配不同的且唯一的ID | 是 |
previewURL | string | 命令名称为 print 时 返回 可预览的PDF文件URL路径 "http://127.0.0.1/previewxxx.pdf" | 是 |
previewImage | string[] | 命令名称为 print 时 返回 预览image的URL路径,是一个字符串数组 [' | 是 |
documentID | string | 文档的唯一ID,对于菜鸟标准面单来讲,就是面单号;如果是自定义模板,需要保证唯一 | |
printer | string | 命令名称为 getDocumentStatus/getTaskStatus 时 返回 负责打印的打印机名 |
参考连接:
版权声明:本文标题:使用 webSocket 连接菜鸟打印(并获取当前电脑连接的打印机信息) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1728317446a1153586.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论