该方案为纯前端实现,我这里用的是bartender2019 ,无需访问网络,即可实现动态传入数据、选择btw模板实现批量打印(目前测试一次打印200张暂时没发现问题)
实现逻辑:
创建一个控制台exe程序(代码太多就不贴出来了,有兴趣的小伙伴可以私信交流),设置windows服务自启,代码里写好对应的端口,前端请求端口发送数据即可
fetch("http://localhost:12345/print/", {
method: "POST",
headers: {
"Content-Type": "application/json;charset=utf-8",
},
body: JSON.stringify(requestData),
})
.then(async (response) => {
const reader = response.body.getReader();
const decoder = new TextDecoder("utf-8");
let { done, value } = await reader.read();
let textBuffer = "";
while (!done) {
textBuffer += decoder.decode(value, { stream: true });
// 按换行符处理
const lines = textBuffer.split("\n");
textBuffer = lines.pop(); // 最后一行可能不完整,留给下一次处理
for (const line of lines) {
if (line.trim()) {
console.log("打印进度:", line.trim());
}
}
({ done, value } = await reader.read());
}
if (textBuffer.trim()) {
console.log("打印进度:", textBuffer.trim());
}
console.log("打印任务全部完成!");
})
.catch((error) => {
console.error("打印失败:", error);
});
我这里用的是fetch旨在流式读取打印进度