redpod

依赖的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);
});

 

分类:

技术点:

相关文章: