端口
websocket端口是13511,打印组件关于页面也有显示的。
命令格式说明
请求:
{
"cmd": "getPrinters",//通用参数:命令
"version": "1.0",//通用参数:客户端最低版本号
"requestId": "158372651568",//通用参数:请求Id,客户端构造
"appName": "Demo",//通用参数:ISV应用名称
"tenantId": "0"//通用参数:客户Id
}
返回:
{
"printers": [
"KM-118D",
"Fax"
],//不同业务返回不同的对象
"cmd": "getPrinters",//通用返回:请求时发送的命令
"requestId": "644314895659",//通用返回:请求Id
"success": true,//通用返回:执行结果
"msg": null//通用返回:如果有错误,会有错误消息
}
使用javascript连接可以使用直接DEMO里面现成的websocket连接类:PrintComponent,这个类把websocket封装好了,可以很优雅的连接和使用打印组件。
也就是说如果没有特殊需求,引入这个JS以后,调用这个命令只需要3行JS代码就完成了
使用示例:
const com = new PrintComponent(this.port);
const cmd = PrintCmd.getPrinters('Demo', '0');
const re = await com.send(cmd);//返回对象re就是上面示例返回的JSON对象了,这里用了await,比回调优雅多了,await支持chrome65(XP最高版本Chrome)以上浏览器
获取打印机列表
参数:
{"cmd":"getPrinters","version":"1.0","requestId":"158372651568","appName":"Demo","tenantId":"0"}
返回:
{"printers":["万能打印机","Microsoft XPS Document Writer","Microsoft XPS Class Driver","Microsoft Print to PDF","KM-118D","Fax"],"cmd":"getPrinters","requestId":"644314895659","success":true,"msg":null}
新建打印模板
参数中省略了2个重要字段没有写详细内容,说明下这两个字段含义:
1,fields:这个是告诉打印组件,你这个模板有多少字段的
[
{
"fieldName": "StringVal",//字段名,用于解析打印数据或预览数据的
"displayName": "字符串类型",//显示名称,显示在打印模板设计字段列表里的
"fieldType": 1//字段类型:1字符串;2整型;3长整型;4时间日期"2022-1-1 18:18:18";5布尔;6小数点数字;7子列表,示例有格式说明;8子对象,示例有格式说明
},
{
"fieldName": "SubList",
"displayName": "子列表",
"groupName": "",
"fieldType": 7,
"subList": [
{
"fieldName": "StringVal",
"displayName": "字符串类型",
"fieldType": 1
}
]
},
{
"fieldName": "SubObject",
"displayName": "子对象",
"fieldType": 8,
"subObject": [
{
"fieldName": "StringVal",
"displayName": "字符串类型",
"fieldType": 1
}
]
}
]
2,previewData:这个是用于编辑模板过程中预览效果的,格式一定是个Json数组,里面每个元素都是一个打印Dto,Dto里面的字段跟上面提供的字段说明需要匹配的,如果不匹配则以字段说明来显示。
[
{
"StringVal": "1479640541",
"SubList": [
{
"StringVal": "1479640541"
}
],
"SubObject": {
"StringVal": "1479640541"
}
}
]
接口参数:
{
"designSchema": {
"fields": [...],
"previewData": [...],
"defaultSize": "60, 40",
"id": "7495838411001637197",
"name": "采购单打印模板"
},
"newTemplateType": 2,
"cmd": "newEmptyTemplate",
"requestId": "7495838411001637196",
"version": "1.1"
}
返回:
{
"editResult": {
"name": "采购单打印模板",
"id": "7495838411001637197",
"oldTemplateUrl": null,
"newTemplateUrl": "http://files.erp12345.com/private/0/采购单打印模板_2022_02_09 022221.repx"//创建好的打印模板会保存到线上,通过URL返回给应用端,应用端只需要保存这个模板Url即可
},
"cmd": "newEmptyTemplate",//通用返回
"requestId": "7495838411001637196",//通用返回
"success": true,//通用返回
"msg": null//通用返回
}
编辑模板
每个参数不细说了,参照一下上面的命令
参数
{
"cmd": "editTemplate",
"version": "1.0",
"requestId": "031085071712",
"appName": "Demo",
"tenantId": "0",
"designSchema": {
"fields": [],
"previewData": [],
"oldTemplateUrl": "http://files.erp12345.com/private/0/采购单打印模板_2022_02_09 022221.repx",
"defaultSize": "60,40",
"id": "202143593362",
"name": "编辑模板模板"
}
}
返回:
{
"editResult": {
"name": "测试添加模板",
"id": "931071036471",
"oldTemplateUrl": "http://files.erp12345.com/private/0/测试添加模板_2022_02_09 145638.repx",
"newTemplateUrl": "http://files.erp12345.com/private/0/测试添加模板_2022_02_09 145656.repx"
},
"cmd": "editTemplate",
"requestId": "013954406979",
"success": true,
"msg": null
}
打印
每个参数不细说了,参照一下上面的命令
参数
{
"cmd": "print",
"version": "1.0",
"requestId": "299162116064",
"appName": "Demo",
"tenantId": "0",
"task": {
"taskId": "026249180427",
"preview": false,
"printer": "万能打印机",
"TemplateUrl": "http://files.erp12345.com/private/0/测试添加模板_2022_02_09 145638.repx",
"fields": [],//同模板设计的fields字段
"documents":[]//同模板设计的previewData字段
}
}
返回:
{"cmd":"print","requestId":"299162116064","success":true,"msg":null}
预览
预览和打印只有一个参数差异: “preview”:true/false
{
"cmd": "print",
"version": "1.0",
"requestId": "299162116064",
"appName": "Demo",
"tenantId": "0",
"task": {
"taskId": "026249180427",
"preview": true,
"printer": "万能打印机",
"TemplateUrl": "http://files.erp12345.com/private/0/测试添加模板_2022_02_09 145638.repx",
"fields": [],//同模板设计的fields字段
"documents":[]//同模板设计的previewData字段
}
}
返回:
{
"cmd": "print",
"requestId": "299162116064",
"success": true,
"msg": null
}