从 cmd 将字体复制到 Zebra 打印机

问题描述 投票:0回答:1

我正在努力通过 CMD 将字体复制到 Zebra 打印机。

一切看起来都非常清晰和简单,也许我错过了一些东西但无法完成。

我尝试过的:

简单复制到共享 Zebra 打印机

Font copy to shared Zebra printer over CMD

看起来工作已完成,但我的 Zebra 打印机上的 LED 保持闪烁(这应该是数据正在复制到打印机的标志)

闪烁持续超过 30 分钟,我认为这是不真实的,我还可以看到打印机队列中的作业被卡住。 (是的,我尝试过重新启动打印机、计算机,每次都发生这种情况

Stuck printer queue after font copy

我知道还有一些其他方法可以将字体打印到打印机,但如果可能的话,我想通过 CMD 解决。

详情: 打印机:Zebra GT800 通过 USB 连接到 USB001 端口

如有任何帮助,我们将不胜感激。

谢谢你!

cmd printing zebra-printers zebra
1个回答
0
投票

如果您安装了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);
        });
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.