PDF417 二维码

PDF417 是一种高密度二维条码,广泛应用于商业和政府组织的各种应用场景。SpreadJS 支持通过公式生成 PDF417 条码,可自定义纠错级别、行列数、紧凑模式和空白区域等参数,适用于证件、物流、库存管理等需要编码大量信息的场景。

概述 本 Demo 展示了如何使用 BC_PDF417 公式在 SpreadJS 中生成 PDF417 二维码。Demo 以应急服务电话号码为例,演示了默认参数、自定义空白区域和自定义列数三种不同的配置方式。 实现思路 初始化工作簿并设置基础表格结构 准备应急服务数据(警察、消防、救护车、交通事故) 使用 CONCAT 公式组合服务名称和电话号码作为条形码编码内容 应用 BC_PDF417 公式生成三种不同配置的条形码 设置表格样式、行高和列宽,使条形码清晰显示 代码解析 数据准备与公式组合 Demo 使用 CONCAT 公式将服务名称和电话号码组合成一个字符串,例如 "Police: 110",作为条形码的编码内容。 生成默认配置的条形码 这是最简单的用法,只传入 value 参数,其他参数使用默认值。生成的条形码使用默认的颜色、纠错级别和行列数。 自定义空白区域的条形码 这个公式自定义了条形码周围的空白区域(quiet zone): quietZoneLeft 为 0(左侧无空白) quietZoneRight 为 10(右侧空白区) quietZoneTop 为 5(顶部空白区) quietZoneBottom 为 5(底部空白区) 自定义列数的条形码 这个公式将 columns 参数设置为 5,指定条形码符号使用 5 列编码。控制列数可以调整条形码的宽度比例。 运行效果 表格展示四组应急服务数据:警察(110)、消防(119)、救护车(120)、交通事故(122) 每行数据生成三个 PDF417 条形码,分别使用不同的配置 第一列条形码使用默认参数,外观为标准尺寸 第二列条形码右侧有更宽的空白区域,整体布局更宽松 第三列条形码使用固定的 5 列编码,宽度比例与其他两列不同 API 参考 BC_PDF417 公式 参数说明: value:要编码的内容字符串 color:条码颜色,默认 'rgb(0,0,0)' backgroundColor:条码背景颜色,默认 'rgb(255, 255, 255)' errorCorrectionLevel:纠错级别,值为 'auto' 或 0-8 rows:符号中的行数,值为 'auto' 或 3-90 columns:符号中的列数,值为 'auto' 或 1-30 compact:是否为紧凑型,默认 false quietZoneLeft:左侧空白区大小 quietZoneRight:右侧空白区大小 quietZoneTop:顶部空白区大小 quietZoneBottom:底部空白区大小
window.onload = function () { var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), { sheetCount: 1 }); initSpread(spread); }; var FORMULA = 'BC_PDF417'; function initSpread(spread) { var sheet = spread.getSheet(0); spread.suspendPaint(); _initCustomSheet(sheet); spread.resumePaint(); } function _initCustomSheet(sheet) { sheet.name('customSheet'); _setData(sheet); _setStyle(sheet); for (var row = 3; row < 7; row++) { var value = 'CONCAT(B' + (row + 1) + ', ": ",C' + (row + 1) + ')'; sheet.setFormula(row, 3, '=' + FORMULA + '(' + value + ')'); sheet.setFormula(row, 4, '=' + FORMULA + '(' + value + ', , , , , , , 0, 10, 5, 5)'); sheet.setFormula(row, 5, '=' + FORMULA + '(' + value + ', , , , , 5)'); } } function _setData(sheet) { sheet.getCell(1, 1).value('服务'); sheet.getCell(1, 2).value('号码'); sheet.getCell(1, 3).value('PDF417 码'); sheet.getCell(2, 3).value('默认值'); sheet.getCell(2, 4).value('自定义填充'); sheet.getCell(2, 5).value('自定义列数'); var dataArray = [ ['Police', 110], ['Fire Department', 119], ['Ambulance Service', 120], ['Traffic Accidents', 122], ]; sheet.setArray(3, 1, dataArray); } function _setStyle(sheet) { for (var row = 3; row < 7; row++) { sheet.setRowHeight(row, 80); } sheet.addSpan(1, 1, 2, 1) sheet.addSpan(1, 2, 2, 1) sheet.addSpan(1, 3, 1, 3) sheet.setColumnWidth(0, 20); sheet.setColumnWidth(1, 200); sheet.setColumnWidth(2, 80); sheet.setColumnWidth(3, 200); sheet.setColumnWidth(4, 200); sheet.setColumnWidth(5, 200); sheet.getRange(1, 1, 2, 5) .foreColor('#000') .backColor('#FFF3CE') .borderLeft(new GC.Spread.Sheets.LineBorder('orange', GC.Spread.Sheets.LineStyle.thin), { outline: true }) .borderBottom(new GC.Spread.Sheets.LineBorder('orange', GC.Spread.Sheets.LineStyle.thin), { outline: true }); sheet .getRange(1, 1, 6, 5) .vAlign(GC.Spread.Sheets.VerticalAlign.center) .hAlign(GC.Spread.Sheets.HorizontalAlign.center) .setBorder(new GC.Spread.Sheets.LineBorder('orange', GC.Spread.Sheets.LineStyle.medium), { outline: true }); sheet.getRange(1, 1, 5, 1).wordWrap(true); }
<!doctype html> <html style="height:100%;font-size:14px;"> <head> <meta name="spreadjs culture" content="zh-cn" /> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/zh/purejs/node_modules/@grapecity-software/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <script src="$DEMOROOT$/zh/purejs/node_modules/@grapecity-software/spread-sheets/dist/gc.spread.sheets.all.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/zh/purejs/node_modules/@grapecity-software/spread-sheets-barcode/dist/gc.spread.sheets.barcode.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/zh/purejs/node_modules/@grapecity-software/spread-sheets-resources-zh/dist/gc.spread.sheets.resources.zh.min.js" type="text/javascript"></script> <script src="$DEMOROOT$/spread/source/js/license.js" type="text/javascript"></script> <script src="app.js" type="text/javascript"></script> <link rel="stylesheet" type="text/css" href="styles.css"> </head> <body> <div class="sample-tutorial"> <div id="ss" class="sample-tutorial"></div> </div> </body> </html>
.sample-tutorial { position: relative; height: 100%; overflow: hidden; } body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; }