使用pdd打印组件实现打印

 文档地址:拼多多 开放平台​​​​​

pdd不再支持虚拟打印,需要连接打印机进行实体打印

组件下载地址:http://meta.pinduoduo.com/api/one/app/v1/lateststable?appId=com.xunmeng.pddprint&platform=windows&subType=main

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。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值