uniapp 手机端打印标签的方式有两种,一种就是连接蓝牙打印机打印,缺点是不可以同时打印,另一种就是手机端连接socket进行打印,推荐电脑端使用hiprint软件
现在就介绍手机端连接socket的方式,下一篇介绍手机连蓝牙打印
- 首先电脑端安装一个hiprint,安装之后就是这样的,电脑端要连接打印机
- uniapp连接打印服务
npm i socket.io-client --save
import io from '@hyoga/uni-socket.io';
let socket = io('http://192.168.66.101:17521', {
transports: ['websocket'],
auth: {
token: 'Bearer ' + this.vuex_token, // 在此处填入你 client 设置的 token,缺省可留空
},
});
socket.on('connect', () => {
console.log('连接成功444');
// TODO: Do something for your project
});
socket.on('clients', (clients) => {
console.log(clients, 'clients');
});
socket.on('printerList', (printerList) => {
// console.log(printerList, 'printerList');
});
socket.on('success', (res) => {
console.log(res, '打印成功');
});
socket.on('error', (res) => {
console.log(res, '打印失败');
});
socket.on('disconnect', () => {
console.log('打印机断开');
this.createSocket() // 重新连接的函数
});
getApp().globalData.socket = socket
- 如果连接成功,电脑端的打印服务会有提醒。
- 然后就开始我们的打印, 由于后端接口是返回pdf的url,所以我用了type: 'url_pdf',有其他文件形式可以参考
electron-hiprint: vue-plugin-hiprint 直接打印客户端;web无预览打印;支持 Mac、Win、Linux 系统;支持 IPP 打印、获取 MAC、IP 地址等
getApp().globalData.socket.emit('news', {
client: null,
printer: 'CT-428D', // 打印机名字
type: 'url_pdf',
orientation: 'portrait',
pdf_path: 'http://192.168.9.42:8082/static/123.pdf',
});
要注意的是,打印的方向和纸张大小,偏移量要在自己本机设置