Javascript 如何使用Nodejs打印lbl文件?
我目前正在尝试使用Nodejs打印一个.lbl文件。我一直在npm和谷歌上搜寻,但我不太确定哪条路最好。我正在考虑修改npm中的一个,以合并我需要的打印机。然而,如果有一个通用的NPM,那就更好了 感兴趣的人的一些背景信息: 我想使用从下拉列表中选择的打印机。一旦选择调用.lbl文件并从“我的打印机”下拉列表旁边的框中打印正确的数量 在打印之前,我需要将标签上的一些值替换为我在屏幕上其他地方选择的各种内容 我在这里使用的是Datamax-O'neil打印机,但在其他地方可能有不同的打印机 我的问题是: 是否有任何人可以推荐的节点包?我已经看过,科尔多瓦插件热敏打印机,以及更多。列出的三个似乎是正确的方向 你知道我能看到的任何例子能为我指明正确的方向吗 很抱歉,如果这是一个重复的问题,我感谢所有的帮助,并提前感谢你Javascript 如何使用Nodejs打印lbl文件?,javascript,node.js,printing,thermal-printer,Javascript,Node.js,Printing,Thermal Printer,我目前正在尝试使用Nodejs打印一个.lbl文件。我一直在npm和谷歌上搜寻,但我不太确定哪条路最好。我正在考虑修改npm中的一个,以合并我需要的打印机。然而,如果有一个通用的NPM,那就更好了 感兴趣的人的一些背景信息: 我想使用从下拉列表中选择的打印机。一旦选择调用.lbl文件并从“我的打印机”下拉列表旁边的框中打印正确的数量 在打印之前,我需要将标签上的一些值替换为我在屏幕上其他地方选择的各种内容 我在这里使用的是Datamax-O'neil打印机,但在其他地方可能有不同的打印机 我的问
安东尼我最终做了这件事。虽然目前这项工作仍在进行中,但它将为可能遇到相同问题的任何人提供一些帮助,或者至少可能为您提供某种指导。我用这个来帮助我更换零件。希望能有帮助
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);
})
}
})
}
const cmd=require('node-cmd'),
fs=要求('fs');
打印:(实体)=>{
公开池(cn,(err,conn)=>{
让quantityToPrint=entity.quantityToPrint;//从inputbox获取数量
让getNeededData=()=>{
返回新承诺((解决、拒绝)=>{
sql=`select*从Blah='BlahBlah'`
conn.query(sql,(错误,数据)=>{
var obj={};
obj.ReplacementValue1=(data.length>0&&typeof数据[0]。ReplacementValue1!=“未定义”)?数据[0]。ReplacementValue1:“”;
obj.ReplacementValue2=(data.length>0&&typeof数据[0]。ReplacementValue2!=“未定义”)?数据[0]。ReplacementValue2:“”;
obj.ReplacementValue3=(data.length>0&&typeof数据[0]。ReplacementValue3!=“未定义”)?数据[0]。ReplacementValue3:“”;
解决(obj);
})
})
}
让getPrintLabel=(obj)=>{
返回新承诺((解决、拒绝)=>{
让printer=entity.printer,//从下拉列表中调用打印机
labelFile='labels/lablefile.lbl',
输入线;
var filename='tempLabel_'+新日期().getTime()+'.lbl';
var gvofile='labels/temp/templabel_'+new Date().getTime()+'.lbl';
管道(fs.createWriteStream(labelFile).pipe(fs.createWriteStream(gvofile,{options:{flags:'r+',mode:666,encoding:'utf8'}}));
setTimeout(函数(){
var data=fs.readFileSync(gvOutFile,'utf8');
var newValue=data.replace(/(\[ValueToReplace1\])/gim,月+'/'+日+'/'+年)
.replace(/(\[ValueToReplace1\])/gim,对象ReplacementValue1)
.replace(/(\[ValueToReplace2\])/gim,对象ReplacementValue2)
.replace(/(\[ValueToReplace3\])/gim,对象ReplacementValue3)
//注意,您可能需要更改替换的方式。我将替换lbl文件中的方括号。
writeFileSync(gvofile,newValue,{options:{flags:'r+',mode:666,encoding:'utf8'});
命令运行('lp-s-c-d'+打印机+''+gvOutFile);
},(2*1000))//2秒
解决();
})
}
对于(变量项=0,x=QuantityTopPrint;项{
close(函数(){});
entity.res.json(数据);
})
}
})
}
我最终做了这个。虽然目前这项工作仍在进行中,但它将为可能遇到相同问题的任何人提供一些帮助,或者至少可能为您提供某种指导。我用这个来帮助我更换零件。希望能有帮助
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);
})
}
})
}
const cmd=require('node-cmd'),
fs=要求('fs');
打印:(实体)=>{
公开池(cn,(err,conn)=>{
让quantityToPrint=entity.quantityToPrint;//从inputbox获取数量
让getNeededData=()=>{
返回新承诺((解决、拒绝)=>{
sql=`select*从Blah='BlahBlah'`
conn.query(sql,(错误,数据)=>{
var obj={};
obj.ReplacementValue1=(data.length>0&&typeof数据[0]。ReplacementValue1!=“未定义”)?数据[0]。ReplacementValue1:“”;
obj.ReplacementValue2=(data.length>0&&typeof数据[0]。ReplacementValue2!=“未定义”)?数据[0]。ReplacementValue2:“”;
obj.ReplacementValue3=(data.length>0&&typeof数据[0]。ReplacementValue3!=“未定义”)?数据[0]。ReplacementValue3:“”;
解决(obj);
})
})
}
让getPrintLabel=(obj)=>{
返回新承诺((解决、拒绝)=>{
让printer=entity.printer,//从下拉列表中调用打印机
labelFile='labels/lablefile.lbl',
输入线;
var filename='tempLabel_'+新日期().getTime()+'.lbl';
var gvofile='labels/temp/templabel_'+new Date().getTime()+'.lbl';
管道(fs.createWriteStream(labelFile).pipe(fs.createWriteStream(gvofile,{options:{flags:'r+',mode:666,encoding:'utf8'}}));
setTimeout(函数(){
var data=fs.readFileSync(gvOutFile,'utf8');
var newValue=data.replace(/(\[ValueToReplace1\])/gim,月+'/'+日+'/'+年)
.replace(/(\[ValueToReplace1\])/gim,对象ReplacementValue1)