[关闭]
@kevinZheng 2018-09-30T01:24:46.000000Z 字数 1354 阅读 2355

基于webSocket 和 socket 的微信小程序打印方案

微信小程序打印 websocket socket c-lodop替代方案


整体方案架构图

Created with Raphaël 2.1.2微信小程序微信小程序打印服务端打印服务端打印客户端打印客户端打印机打印机webSocket请求,发送打印任务ajax请求,发送打印任务输出pdf\图片等文件内容socket通信,传递任务本地调用打印任务socket反馈任务执行结果传递打印结果

打印任务实现方案A:
利用微信小程序的canvas能力对打印内容进行绘制然后转成base64图片,传递到打印客户端之后还原成图片文件的形式进行打印
优缺点:不确定打印质量能否满足需求,canvas渲染打印内容的难度较高,且不容易实现条形码二维码等动态图形内容,整体难度较高,,但是打印内容比较灵活

预计的打印任务数据格式:

  1. {
  2. "taskId" : 123456,//任务id
  3. "printerId" : "P001",//打印机id
  4. "paper" : {"size":"70*50","left":10,top:10,},//纸张设置项
  5. "content" : "base64图片内容",//打印内容
  6. "repeat" : 1,//重复打印的份数
  7. }

打印任务实现方案B:
将打印任务定义成模板的形式, 由打印客户端将微信小程序传递的任务数据和任务模板组装到一起然后打印

预计的打印任务数据格式:

  1. {
  2. "taskId" : 123456,//任务id
  3. "printerId" : "P001",//打印机id
  4. "paper" : {"size":"70*50","left":10,top:10,},//纸张设置项
  5. "templateId" : "t001",//打印模板id
  6. "data" : {a:"a",b:"b", ...}
  7. "repeat" : 1,//重复打印的份数
  8. }

打印任务实现方案C:
将打印客户端能实现的打印内容包装成常用打印接口类型,然后传递接口类型和参数,这种方式包含了第一种图片形式的打印
预计的打印任务数据格式:

  1. {
  2. "taskId" : 123456,//任务id
  3. "printerId" : "P001",//打印机id
  4. "paper" : {"size":"70*50","left":10,top:10,},//纸张设置项
  5. "content" : [
  6. //图片类的,参数有 图片内容, 变换矩阵参数
  7. {"type":"image","x","y","param":["base64image","m1","matrix2","matrix3","m4","m5","m6"]},
  8. //文字内容,位置,大小,字体
  9. {"type":"text","x","y","param":["text_content","size","fontFamily"]},
  10. //二维码,条形码等内容转码
  11. {"type":"code","x","y","param":["QR","www.yin8.net","w","h"]},
  12. //网页地址
  13. {"type":"url","x","y","param":["www.yin8.net","w","h"]},
  14. ],
  15. "repeat" : 1,//重复打印的份数
  16. }

PS: 还可以扩展打印机属性,通过printerId 控制 输出成 pdf 或者图片,或者excel等其他文件格式

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注