我如何使用 Nodejs 打印 lbl 文件?
How do i print an lbl file using Nodejs?
我目前正在尝试使用 Nodejs 打印 .lbl 文件。我一直在 npm 和 google 上四处寻找,但是,我不太确定最好的方法是什么。我正在考虑修改一个 npm 以合并我需要的打印机。但是,如果有一个通用的 NPM 就更好了。
一些感兴趣的人的背景信息:
我想使用我从下拉列表中 select 编辑的打印机。一旦 select 调用 .lbl 文件并从我的打印机下拉列表旁边的框中打印正确的数量。
在打印之前,我需要用我在屏幕上其他地方select编辑的各种东西替换标签上的一些值。
我在这里使用的是 Datamax-O'neil 打印机,但其他地方可能有不同的打印机。
我想问你的问题:
是否有任何人可能会推荐的节点包?我已经查看了 node-printer, cordova-plugin-thermal-printer, and dymo 以及更多内容。列出的三个似乎是正确的方向。
您是否知道我可能会看到的任何示例可能会为我指明正确的方向?
抱歉,如果这是一个重复的问题,我感谢所有的帮助,并提前致谢。
安东尼
我最终做到了这一点。虽然目前它仍在进行中,但它会给任何可能遇到同样问题的人一些帮助,或者至少可能会给你某种方向。我用这个 tool 来帮助我更换零件。希望对你有帮助。
const cmd = require('node-cmd'),
fs = require('fs');
print: (entity) => {
pool.open(cn, (err, conn) => {
let quantityToPrint = entity.quantityToPrint; //Get Quantity from inputbox
let getNeededData = () => {
return new Promise((resolve, reject) => {
sql = `select * from Table where Blah = 'BlahBlah'`
conn.query(sql, (err, data) => {
var obj = {};
obj.ReplacementValue1 = (data.length > 0 && typeof data[0].ReplacementValue1 !== 'undefined') ? data[0].ReplacementValue1 : '';
obj.ReplacementValue2 = (data.length > 0 && typeof data[0].ReplacementValue2 !== 'undefined') ? data[0].ReplacementValue2 : '';
obj.ReplacementValue3 = (data.length > 0 && typeof data[0].ReplacementValue3 !== 'undefined') ? data[0].ReplacementValue3 : '';
resolve(obj);
})
})
}
let getPrintLabel = (obj) => {
return new Promise((resolve, reject) => {
let printer = entity.printer, //Printer I call from a drop down
labelFile = 'labels/lablefile.lbl',
inputLine;
var filename = 'tempLabel_' + new Date().getTime() + '.lbl';
var gvOutFile = 'labels/temp/templabel_' + new Date().getTime() + '.lbl';
fs.createReadStream(labelFile).pipe(fs.createWriteStream(gvOutFile, { options: { flags: 'r+', mode: 666, encoding: 'utf8' } }));
setTimeout(function () {
var data = fs.readFileSync(gvOutFile, 'utf8');
var newValue = data.replace(/(\[ValueToReplace1\])/gim, month + '/' + day + '/' + years)
.replace(/(\[ValueToReplace1\])/gim, obj.ReplacementValue1)
.replace(/(\[ValueToReplace2\])/gim, obj.ReplacementValue2)
.replace(/(\[ValueToReplace3\])/gim, obj.ReplacementValue3)
//NOTE, You may need to change how you are replacing. I replace brackets in my lbl file.
fs.writeFileSync(gvOutFile, newValue, { options: { flags: 'r+', mode: 666, encoding: 'utf8' } });
cmd.run('lp -s -c -d ' + printer + ' ' + gvOutFile);
}, (2 * 1000))// 2 Seconds
resolve();
})
}
for (var item = 0, x = quantityToPrint; item < x; item++) {
getNeededData().then(getPrintLabel).then((data) => {
pool.close(function () { });
entity.res.json(data);
})
}
})
}
我目前正在尝试使用 Nodejs 打印 .lbl 文件。我一直在 npm 和 google 上四处寻找,但是,我不太确定最好的方法是什么。我正在考虑修改一个 npm 以合并我需要的打印机。但是,如果有一个通用的 NPM 就更好了。
一些感兴趣的人的背景信息: 我想使用我从下拉列表中 select 编辑的打印机。一旦 select 调用 .lbl 文件并从我的打印机下拉列表旁边的框中打印正确的数量。
在打印之前,我需要用我在屏幕上其他地方select编辑的各种东西替换标签上的一些值。
我在这里使用的是 Datamax-O'neil 打印机,但其他地方可能有不同的打印机。
我想问你的问题: 是否有任何人可能会推荐的节点包?我已经查看了 node-printer, cordova-plugin-thermal-printer, and dymo 以及更多内容。列出的三个似乎是正确的方向。
您是否知道我可能会看到的任何示例可能会为我指明正确的方向?
抱歉,如果这是一个重复的问题,我感谢所有的帮助,并提前致谢。
安东尼
我最终做到了这一点。虽然目前它仍在进行中,但它会给任何可能遇到同样问题的人一些帮助,或者至少可能会给你某种方向。我用这个 tool 来帮助我更换零件。希望对你有帮助。
const cmd = require('node-cmd'),
fs = require('fs');
print: (entity) => {
pool.open(cn, (err, conn) => {
let quantityToPrint = entity.quantityToPrint; //Get Quantity from inputbox
let getNeededData = () => {
return new Promise((resolve, reject) => {
sql = `select * from Table where Blah = 'BlahBlah'`
conn.query(sql, (err, data) => {
var obj = {};
obj.ReplacementValue1 = (data.length > 0 && typeof data[0].ReplacementValue1 !== 'undefined') ? data[0].ReplacementValue1 : '';
obj.ReplacementValue2 = (data.length > 0 && typeof data[0].ReplacementValue2 !== 'undefined') ? data[0].ReplacementValue2 : '';
obj.ReplacementValue3 = (data.length > 0 && typeof data[0].ReplacementValue3 !== 'undefined') ? data[0].ReplacementValue3 : '';
resolve(obj);
})
})
}
let getPrintLabel = (obj) => {
return new Promise((resolve, reject) => {
let printer = entity.printer, //Printer I call from a drop down
labelFile = 'labels/lablefile.lbl',
inputLine;
var filename = 'tempLabel_' + new Date().getTime() + '.lbl';
var gvOutFile = 'labels/temp/templabel_' + new Date().getTime() + '.lbl';
fs.createReadStream(labelFile).pipe(fs.createWriteStream(gvOutFile, { options: { flags: 'r+', mode: 666, encoding: 'utf8' } }));
setTimeout(function () {
var data = fs.readFileSync(gvOutFile, 'utf8');
var newValue = data.replace(/(\[ValueToReplace1\])/gim, month + '/' + day + '/' + years)
.replace(/(\[ValueToReplace1\])/gim, obj.ReplacementValue1)
.replace(/(\[ValueToReplace2\])/gim, obj.ReplacementValue2)
.replace(/(\[ValueToReplace3\])/gim, obj.ReplacementValue3)
//NOTE, You may need to change how you are replacing. I replace brackets in my lbl file.
fs.writeFileSync(gvOutFile, newValue, { options: { flags: 'r+', mode: 666, encoding: 'utf8' } });
cmd.run('lp -s -c -d ' + printer + ' ' + gvOutFile);
}, (2 * 1000))// 2 Seconds
resolve();
})
}
for (var item = 0, x = quantityToPrint; item < x; item++) {
getNeededData().then(getPrintLabel).then((data) => {
pool.close(function () { });
entity.res.json(data);
})
}
})
}