文档地址:拼多多 开放平台
pdd不再支持虚拟打印,需要连接打印机进行实体打印
npm i pdd
npm i websocket
//初始化websocket (要打开上面那个pdd打印组件这个websocket才能连接上)
initWs() {
this.socket = new WebSocket("ws://127.0.0.1:5000");
// 添加WebSocket事件监听器
this.socket.addEventListener("open", this.onSocketOpen);
this.socket.addEventListener("message", this.onSocketMessage);
this.socket.addEventListener("close", this.onSocketClose);
this.socket.addEventListener("error", this.onSocketError);
},
onSocketOpen() {
console.log("WebSocket连接已打开");
//获取本地打印机列表
let data = {
cmd: "getPrinters",
version: "1.0",
};
this.socket.send(JSON.stringify(data));
},
onSocketMessage(event) {
console.log("收到WebSocket消息:", event.data);
const result = JSON.parse(event.data);
console.log(result.cmd);
if (result.cmd == "getPrinters") {
this.printerList = result.printers;
}
},
onSocketClose() {
console.log("WebSocket连接已关闭");
},
onSocketError(event) {
console.error("WebSocket连接错误:", event);
}
实现打印,发送打印协议。数据是文档里的,taskID必须是唯一的,可以用时间戳。
print() {
let data = {
ERPId: 303379400,
cmd: "print",
requestID: "90E06437",
task: {
documents: [
{
contents: [
{
addData: {
sender: {
address: {
city: "上海市",
detail: "陕西面馆",
district: "长宁区",
province: "上海市",
},
mobile: "333333333333",
name: "ceshi",
},
},
encryptedData:
"35803c72f596cb6aeeb2bf7249968965aa24ecba756f3e127d50c315d4e06cd5013899573a4d598eaf81a75556cca13c5ebab13723ddf1599dc5618f644baef72c78a170acd67233e1c271dafd8f34a43b70e1b4f16746a6b5febc112049fa2074f2cd3745a79d3ea0700cc8fafb9ef81ee5656ea541d26ce34eacad30c78739aa578c0ae34481dd9939b745aa9fb50009b2d5a09513225ee58664b5d5158d6780a9bab857c0c3c59faf514580324c56e6553fc44ab9c40fb1e57c0953fddae580c15ba45507af840bbcc7667832217064b5318bb445a3e23e6983e757fbab8856491f2320b5af8ac003273f288ed6b58ee96021691f05c533df5f755ed57693dffc60d9f6eb0bcb67fa04962df71333115198e90a6a5ea54d6a10da48ace14abbbe9273f14084925917d5c2a2a9bf9adfecfc17d0cd356418d6bbac201272be81e71a043755b98813bf6f86354dbc1992b4c8be5b459c793c73f28f2c6afd859509c303cd529c8e160270358314169a28e037e9c0def9f4950701de8978bc2874f67ffee2fc2f73bba159d5e8b26ffdda1258e8c862dbf829ca5f8be88e9182a5a9f32387cc964cb387726bdd56399dba8dfe503102088a4d1dadc07e97a464b094e31de84906a5f1c26813569ec3c510224a58fd5c49a172ad69217036078525c1428c54131aec25f02a83c1c6739fba45f1472aca26b55efc2268711076d79f395d17d0c49240ed00e34e8b3e077c633c922329c2a85de75bacdee7e21000fe9d2dc3aa0efed455985d5eb0eb4fa1b5265e26de3d807fd083b451e4c6668bb909832ec5df74d6a07e2c355c30736f1f0d3d7caaf35aa6ba4ac353b3eab8f66a381c4e0da904c23666479a0b1921d8ed19288cc0bf9925e2a86af0f9ee9967b7de61a296d23e47594ff6e745384da6b9cd5e55572e948d054113af793645bff8abc511d280e226cfe98d12e7c86f4f5aee4cf53fcea4425ad3cb1a99022361eb7e12102158f9f948dbee94dbf8495586d6d9a769c0647356c7f80186f4dca573b96476f1b88291329eeb29eebbb6a0",
signature:
"PAPe5OYetWzKlZD3Wnvi4BPKI6CeCybLmYgzZioIw0XAs7dOdosozY9XXoYDf4cnByiza/JuDvoYQvgh+HYqaCNnJ0G1WnScQ7MSoWGkIcE6FBOxFhsbokLNX2ixiOQ4ERCuozajDsSYpDyOpqvDB4vT5AALyQjXAfnR8GyR/B4=",
templateUrl:
"http://pinduoduoimg.yangkeduo.com/print_template/2019-08-01/4f0d85f35ca5729ad7df47314c990c31.xml",
userid: "480261061",
ver: "3",
},
{
data: {
height: 240,
list: [
{
fontSize: 31.2,
height: 45.68,
left: 2.08,
text: "[备注: 没有什么备注]",
top: 2.08,
width: 413.52,
},
],
waterdata: {
text: "",
},
width: 560,
},
templateURL:
"http://pinduoduoimg.yangkeduo.com/logistics/2019-07-14/5d7e8b5969d954539fcfba3268bbeb3a.xml",
},
],
documentID: "5520010649869215",
},
],
notifyType: ["print"],
preview: false,
previewType: "image",
printer: "",
taskID: new Date().getTime(),
},
version: "1.0",
};
this.socket.send(JSON.stringify(data));
}
这样就算成功了,上面success就可以了,下面failed是因为我没有实体打印机
最后在组件销毁前生命周期记得关闭websocket。