ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

nodejs 根据Excel数据批量生成条形码标签

2021-07-13 13:01:46  阅读:191  来源: 互联网

标签:条形码 const JsBarcode nodejs doc require Excel dataline var


依赖的npm包   :  JsBarcode,pdfkit ,svg-to-pdfkit ,xlsx

excel表格表头包含 : SKU ,name, barcode

根据Excel里的数据大批量生成条形码标签, pdf矢量格式, 一个标签一个文件

代码:

const fs = require('fs'),
    JsBarcode = require('JsBarcode'),
    PDFDocument = require('pdfkit'),
    SVGtoPDF = require('svg-to-pdfkit'),
    XLSX = require('xlsx');
const { DOMImplementation, XMLSerializer } = require('xmldom');
 
function bagLabel(dataline) {
    //新建pdf   默认分辨率 72dpi
    var doc = new PDFDocument({
        size: [153, 113], 
        margins: {
            top: 6,
            bottom: 3,
            left: 2,
            right: 2
        }
    }),
        stream = fs.createWriteStream(`${dataline.SKU}-${dataline.name}-${dataline.barcode}标签.pdf`);
    //插入文本(必须指定中文字体路径)
    doc.font('c:/Windows/Fonts/simhei.ttf').fontSize(14).text(dataline.name, { align: 'center', width: 149 });
    //生成条码
    const document = new DOMImplementation().createDocument('http://www.w3.org/1999/xhtml', 'html', null);
    const svgNode = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
    JsBarcode(svgNode, dataline.barcode, {
        xmlDocument: document,
        format: "CODE128",
        width: 2,
        height: 100,
        fontSize:12,
        margin:1
    });
    //插入条码
    SVGtoPDF(doc, svgNode, 15, 22);
    //写入文件并关闭
    stream.on('finish', function () {
        console.log('保存标签');
    });
    doc.pipe(stream);
    doc.end();
}
//读取Excel
var workbook = XLSX.readFile('barcodes.xlsx');
var worksheet = workbook.Sheets['Sheet1'];
var datalist = XLSX.utils.sheet_to_json(worksheet);
//遍历数据
datalist.forEach(function(d){
    bagLabel(d);
});

 

标签:条形码,const,JsBarcode,nodejs,doc,require,Excel,dataline,var
来源: https://www.cnblogs.com/redpod/p/15005918.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有