我正在努力通过 CMD 将字体复制到 Zebra 打印机。
一切看起来都非常清晰和简单,也许我错过了一些东西但无法完成。
我尝试过的:
简单复制到共享 Zebra 打印机
看起来工作已完成,但我的 Zebra 打印机上的 LED 保持闪烁(这应该是数据正在复制到打印机的标志)
闪烁持续超过 30 分钟,我认为这是不真实的,我还可以看到打印机队列中的作业被卡住。 (是的,我尝试过重新启动打印机、计算机,每次都发生这种情况)
我知道还有一些其他方法可以将字体打印到打印机,但如果可能的话,我想通过 CMD 解决。
详情: 打印机:Zebra GT800 通过 USB 连接到 USB001 端口
如有任何帮助,我们将不胜感激。
谢谢你!
如果您安装了node-js,则可以使用以下代码。 另存为文件 sendfont.js,然后运行:
> node sendfont.js c:\path\to\font.ttf R:MYFONT.FON printer-addr
文件使用
~DU
发送字体,然后向打印机查询字体以确保其安装正确。 您可能想在该检查上添加错误检查。
目前它仅显示 ^HW
命令的结果。
// sendfont.js
const fs = require('fs');
const net = require('net');
if (process.argv.length != 5) {
console.log('Usage: node sendfont.js font-path zplname printer-addr');
process.exit(1);
}
const path = process.argv[2]; // e.g. 'c:\\path\\to\\font.ttf'
const zname = process.argv[3]; // e.g. 'R:MYFONT.FON';
const addr = process.argv[4]; // 'www.xxx.yyy.zzz';
let buf = fs.readFileSync(path);
let zpl = '~DU' + zname + ',' + buf.length + ',' +
buf.toString('hex');
// Send the font, then query to verify
(async () => {
await zsend(addr, zpl);
console.log('' + (await zsend(addr, '^XA^HW' + zname + '^XZ', true)));
process.exit(0);
})();
function zsend(addr, text, recv) {
return new Promise((resolve, reject) => {
let timer = null;
let result = null;
const client = new net.Socket();
client.setNoDelay();
client.connect(9100, addr, () => {
client.write(text, () => {
if (recv) {
timer = setTimeout(resolve, 2500);
} else {
resolve();
}
});
});
client.on('data', (data) => {
result = result ? Buffer.concat([result, data]) : data;
if (timer) {
clearTimeout(timer);
}
// Wait for more data
timer = setTimeout(()=>{ resolve(result); }, 200);
});
client.on('error', (err) => {
reject(err);
});
});
}