2017-03-16 8 views
1

現在、Nodejsを使用して.lblファイルを印刷しようとしています。私はnpmとgoogleで掘り下げてきましたが、何が最善のルートになるのかはよくわかりません。私は必要なプリンタを組み込むためにnpmを修正することを考えていました。しかし、そこに一般的なNPMがあれば、それは良いでしょう。Nodejsを使用してlblファイルを印刷するにはどうすればよいですか?

興味がある人のための背景情報: ドロップダウンリストから選択したプリンタを使用したいと思います。 .lblファイルを選択して、プリンタの横にあるボックスから正しい数量を印刷します。

ラベルの値を印刷前に別の場所で選択したものに置き換える必要があります。

ここではDatamax-O'neilプリンタを使用していますが、他の場所にはプリンタが異なる場合があります。

私の質問: 誰かが推薦できるパッケージがありますか?私はnode-printer、cordova-plugin-thermal-printer、そしてdymoをもっと見てきました。リストされた3つは正しい方向にあるようです。

私が正しい方向を示す可能性のある例を知っていますか?

申し訳ありませんこれは重複した質問があれば、私はすべての助けに感謝し、事前に感謝します。

アンソニー

答えて

0

私はこれをやりました。現在進行中の作業ですが、同じ問題を経験している可能性のある人に何らかの助けを与えるか、少なくとも何らかの方向性を与えるかもしれません。私はこの交換の部分を私に助けるためにこの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); 
     }) 
    } 
}) 
} 
関連する問題