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