批量打印功能预研

批量打印功能预研

pdf文件批量打印

1.Lodop前端打印方案

lodop官网:http://www.c-lodop.com/index.html

示例:

http://www.c-lodop.com/demolist/PrintSample52.html

问题:

  1. 需要安装软件。
  2. 如果没有默认打印机需要选择一个打印机
  3. 软件使用需要购买授权 http://www.c-lodop.com/Lodop_Lic.html
  4. 和hiprint混合使用的话会存在下载两个软件的问题。

预研demo地址:

https://gitee.com/qmxx-demo/pdf-hiprint-batch-print.git

2.vue-print-nb打印方案 ==(不满足)==

vue-print-nb 文档

https://www.jianshu.com/p/dee43f02634f https://www.npmjs.com/package/vue-print-nb

问题:

  1. 无法跳过预览界面

预研demo地址:

https://gitee.com/qmxx-demo/pdf-hiprint-batch-print.git

3.httpprint打印控件 ==目前没有打印成功==

官网地址:

http://www.httpprinter.com/index.html

存在问题:

  1. 需要购买,如果不购买: a. 显示我们公司logo,联系方式 b. 启动后允许打印50份,重启插件后,可以继续使用.
  2. 需要安装软件。
  3. 项目部署到服务端之后,调用软件接口项目会存在跨域问题。

4.基于electron-hiprint打印pdf-url的方式

具体实现方案

  1. 安装electron-hiprint安装包
  2. 通过socket.io-client方式和软件进行通讯,发送打印消息。
const electronPrint = () => {
  //   const socket = io("http://localhost:17521", {
  //   transports: ["websocket"],
  //   auth: {
  //     token: "vue-plugin-hiprint", // 在此处填入你 client 设置的 token,缺省可留空
  //   }
  // })
  let pdfUrlList = [
    "https://ssm.meizhitech.com/pdf/1.pdf",
    "https://ssm.meizhitech.com/pdf/2.pdf",
  ];
  pdfUrlList.forEach((pdfUrl) => {
    hiprint.hiwebSocket.send({ type: "url_pdf", pdf_path: pdfUrl });
  });
};

hiprint多模板批量打印

具体实现方案

  1. 下载配合vue-plugin-hiprint插件使用的exe安装包进行安装
  2. 启动安装好的软件
  3. 代码内执行模板的打印方法(代码如下)
const printMore = () => {
  let hiprintTemplate = new hiprint.PrintTemplate({
    template: templateJson,
  });
  let hiprintTemplate2 = new hiprint.PrintTemplate({
    template: templateJson2,
  });
  // 多模板直接打印
  hiprint.print2(
    {
      templates: [
        { template: hiprintTemplate, data: printData, options: {} },
        { template: hiprintTemplate2, data: printData2 },
      ],
      options: { printer: "", landscape: true },
    },
    function (data: any) {
      console.log("printSuccess");
    },
    function (e: any) {
      console.log("printError");
    }
  );

预研demo项目地址:

https://gitee.com/qmxx-demo/pdf-hiprint-batch-print.git

存在问题

  1. 由于客户端原理一样是需要先渲染html,所以批量打印传的数据过多会造成客户端卡死/等待时间长等问题。 所以建议使用队列形式进行批量打印。
  2. 需要安装配合vue-plugin-hiprint插件的安装包软件(mac系统还未测试过,win可以批量打印模板),打印前需要启动安装的软件,并且需要电脑提前安装好打印机的驱动。不同的打印机驱动是否能调用未知。

参考文档:

  1. vue-plugin-hiprint插件 https://gitee.com/CcSimple/vue-plugin-hiprint
  2. https://mp.weixin.qq.com/s/4N4f7CkxodA-fuTJ_FbkOQ
  3. https://mp.weixin.qq.com/s/P-Zz8YfELmRNi4EuED4QmA
Top