@kevinZheng
2018-09-30T01:24:46.000000Z
字数 1354
阅读 2353
微信小程序打印
websocket
socket
c-lodop替代方案
整体方案架构图
打印任务实现方案A:
利用微信小程序的canvas能力对打印内容进行绘制然后转成base64图片,传递到打印客户端之后还原成图片文件的形式进行打印
优缺点:不确定打印质量能否满足需求,canvas渲染打印内容的难度较高,且不容易实现条形码二维码等动态图形内容,整体难度较高,,但是打印内容比较灵活
预计的打印任务数据格式:
{
"taskId" : 123456,//任务id
"printerId" : "P001",//打印机id
"paper" : {"size":"70*50","left":10,top:10,},//纸张设置项
"content" : "base64图片内容",//打印内容
"repeat" : 1,//重复打印的份数
}
打印任务实现方案B:
将打印任务定义成模板的形式, 由打印客户端将微信小程序传递的任务数据和任务模板组装到一起然后打印
预计的打印任务数据格式:
{
"taskId" : 123456,//任务id
"printerId" : "P001",//打印机id
"paper" : {"size":"70*50","left":10,top:10,},//纸张设置项
"templateId" : "t001",//打印模板id
"data" : {a:"a",b:"b", ...}
"repeat" : 1,//重复打印的份数
}
打印任务实现方案C:
将打印客户端能实现的打印内容包装成常用打印接口类型,然后传递接口类型和参数,这种方式包含了第一种图片形式的打印
预计的打印任务数据格式:
{
"taskId" : 123456,//任务id
"printerId" : "P001",//打印机id
"paper" : {"size":"70*50","left":10,top:10,},//纸张设置项
"content" : [
//图片类的,参数有 图片内容, 变换矩阵参数
{"type":"image","x","y","param":["base64image","m1","matrix2","matrix3","m4","m5","m6"]},
//文字内容,位置,大小,字体
{"type":"text","x","y","param":["text_content","size","fontFamily"]},
//二维码,条形码等内容转码
{"type":"code","x","y","param":["QR","www.yin8.net","w","h"]},
//网页地址
{"type":"url","x","y","param":["www.yin8.net","w","h"]},
],
"repeat" : 1,//重复打印的份数
}
PS: 还可以扩展打印机属性,通过printerId 控制 输出成 pdf 或者图片,或者excel等其他文件格式