前端采用electron-hiprint控件实现静默打印

1、功能需求

在进行点击打印调用PDF打印功能时候,每一次打印都需要进行手动预览确认

需要进行批量打印+静默直接打印

2、插件介绍

electron-hiprint: vue-plugin-hiprint 直接打印客户端;web无预览打印;支持 Mac、Win、Linux 系统;支持 IPP 打印、获取 MAC、IP 地址等 - Gitee.com

2.1 基本流程

2.1.1 下载插件,npm i ,npm run start

2.1.2安装依赖

在项目中财用通过 socket.io (默认端口 17521)提供服务。

复制代码
npm install socket.io-client@4 --save

2.1.3项目引用+创建实例

javascript 复制代码
import { io } from "socket.io-client";

const Socket = io("http://localhost:17521", {
  transports: ["websocket"],
  auth: {
    token: "vue-plugin-hiprint",
  },
});

Socket().on('success', res => {

  });
Socket.on('error', err => {
//这里有问题需要自己在源码中进行修改抛出的err.message
});

Socket.on('printerList', printerList => {
                           
console.log('打印机列表', printerList);
});

Socket.on('connect', () => {

console.log('Socket 连接成功');
});

Socket.on('connect_error', () => {
console.log('Socket 错误关闭连接');
getSocket().close();//关闭实例
});

2.1.4 进行各项回调监听

连接成功监听、连接失败监听(文档里没写)、打印成功监听、打印失败监听、获取电脑打印机列表监听(可以主动获取)

2.2进行调用打印

批量打印进行循环调用(批量打印的所有成功失败回调会单独调用监听。需要自己判断成功失败的条数与总数进行二次判断)

javascript 复制代码
// 非vue-plugin-hiprint
socket.emit("news", {
  client,
  printer,
  type: "url_pdf",
  templateId: "自定义Id,用于判断任务是否成功",
  pdf_path: "网络PDF的下载url",
});

参数项

javascript 复制代码
{
    client?: string; // 客户端id,连接中转服务必填
    printer?: string; // 打印机名称
    pages?: string; // 打印页数
    subset?: string; // 奇偶页 even、odd
    orientation?: string; // 纸张方向 portrait、landscape
    scale?: string; // 缩放 noscale、shrink、fit
    monochrome?: boolean; // 黑白打印 true、false
    side?: string; // 单双面 duplex, duplexshort, duplexlong, and simplex
    bin?: string; // select tray to print to
    paperName?: string; // 纸张大小 A2, A3, A4, A5, A6, letter, legal, tabloid, statement
    silent?: boolean; // Silences error messages.
    printDialog?: boolean; // 显示打印对话框 true、false
    copies?: number; // 打印份数
}

二开的打包、如果只进行win32进行打包就直接调用打包命令就可以了

如果要打包到别的环境比如linux。mac等 就需要自己进行特定环境打包

也可以在作者分支上fock进行tag再次打包

相关推荐
葡萄城技术团队17 分钟前
1000 人协同压测的环境瓶颈排查:CPU 争用与 Wi\-Fi
前端
excel1 小时前
Marked 与 Markdown 有什么区别?该怎么选?
前端
Da Da 泓2 小时前
五子棋 Web 端测试用例报告
前端·网络·websocket·网络协议·测试用例·项目
zxcvb1533 小时前
远程查看本地文档:一条轻量 Web 文件服务的工程化链路
前端·远程查看文档
niucloud-admin3 小时前
NIUCLOUD PHP SAAS上门家政使用文档:城市管理
java·前端·php
程序员大阳3 小时前
副队长JavaScript教程(50)-DOM:网页开发的起点
javascript·dom·es·节点·概念·document·关系
北岛贰3 小时前
啵啵音乐迎来全新升级!
前端
甘晴void5 小时前
我给 Magpie 做了个 macOS 桌宠:106 段动画,请求一多就亮灯
macos·electron·开源·deepseek·桌面宠物·magpie
hkNaruto5 小时前
【AI】基于大模型的AI游戏地图生成、控制方案:AI Native Game Harness 迁移操作手册
前端·人工智能·游戏
IT_陈寒6 小时前
Java序列化踩坑记:对象循环引用让我加班两小时
前端·人工智能·后端