更新记录

1.0.0(2026-07-19)

首发:自研高性能原生一维条形码核心(Code128 / EAN-13 / UPC-A / EAN-8 / Code39 / Code93 / Code11 / Cod


平台兼容性

uni-app x(5.14)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × 5.0 12 × ×

nex-barcode —— 高性能一维条形码

自研高性能原生一维条形码核心(Code128 / EAN-13 / UPC-A / EAN-8 / Code39 / Code93 / Code11 / Codabar / ITF, 生成 PNG / SVG),提供 uni-app 可调的 JS API。 仅支持 App 端(Android / iOS),H5 / 小程序加载不了原生库。

同一份 utssdk 插件同时支持 uni-app x(uvue)经典 uni-app(vue3),无需分叉。 全部 路径出:传 content + dest 文件路径,原生侧编码 → 渲染 → 写文件 → 返回结果。 自研核心,无额外系统依赖。与 nex-qrcode(二维码)互补。

API

JS API 签名 说明
generate generate(content, dest, symbology, height, scale): BarcodeResult symbology 码制生成一维条形码渲染为 PNG 写入 dest
generateSvg generateSvg(content, dest, symbology, height, scale): BarcodeResult symbology 码制生成 SVG 写入 dest
supportedSymbologies supportedSymbologies(): string[] 返回支持的码制名(前端给用户选)

类型

// generate / generateSvg 返回(字段 camelCase)
type BarcodeResult = { width: number; height: number; sizeBytes: number; costMs: number };

支持的码制(symbology,大小写不敏感)

symbology 码制 数据规则
code128 Code 128 任意可见 ASCII(自动用 Code Set B;高级用法可手动前置 À/Ɓ/Ć 选字符集)
ean13 EAN-13 12 位数字(自动补第 13 位校验)或 13 位数字(校验已含的校验位)
upca UPC-A EAN-13 的别名(UPC-A 即首位为 0 的 EAN-13),数据规则同 ean13
ean8 EAN-8 7 位数字(自动补第 8 位校验)或 8 位数字
code39 Code 39 大写字母 / 数字 / - . $ / + % 空格
code93 Code 93 同 Code39 字符集(更高密度)
code11 Code 11 数字与 -
codabar Codabar 数字与 - $ : / . +,须以起止字母 A/B/C/D 包裹(如 A1234B
itf Interleaved 2 of 5 偶数位数字(物流常用)

参数与错误

  • content:条码内容,为空InvalidParam不符合所选码制规则(如 EAN-13 非 12/13 位、含非法字符、校验位错)→ InvalidParam绝不闪退
  • symbology:上表之一,未知InvalidParam
  • content:编码内容字符数 ≤ 512MAX_CONTENT_LEN),超限 → InvalidParam(模块数由内容长度决定,非固定数百)。
  • height:条码高度(像素),范围 1..=4096,越界 → InvalidParam
  • scale:最窄条宽度(像素,即 xdim),范围 1..=20,越界 → InvalidParam
  • 像素预算:生成位图前校验 模块数 × scale × height ≤ 64,000,000MAX_PIXEL_BUDGET),超限 → InvalidParam,杜绝巨幅 RGBA 位图 OOM。
  • BarcodeResult.width/height:PNG 为实际渲染像素宽高(height = 入参 height);SVG 为标称尺寸(width = 模块数 × scale、height = 入参 height)。
  • BarcodeResult.sizeBytes:写入文件字节数(PNG / SVG 各自的文件大小)。
  • BarcodeResult.costMs:只计「编码 + 渲染」处理段(毫秒,不含磁盘 IO)。
  • 错误经原生层 BarcodeException(Kotlin) / BarcodeError(Swift) 抛出(Io / InvalidParam / Encode),UTS 侧透传,可 try/catch

用法

import { generate, generateSvg, supportedSymbologies } from "@/uni_modules/nex-barcode";

// 列出支持的码制(前端下拉给用户选)
const syms = supportedSymbologies(); // ['code128','ean13','upca',...]

// 生成 Code128 PNG:高 120、最窄条 2px
const r = generate("ABC-12345", destPngPath, "code128", 120, 2);
console.log(r.width, r.height, r.sizeBytes, r.costMs);

// 生成 EAN-13 PNG:传 12 位数字,自动补校验位
const e = generate("012345678905", destPngPath, "ean13", 100, 2);

// 生成 Code39 SVG
const s = generateSvg("HELLO123", destSvgPath, "code39", 80, 2);
console.log(s.width, s.height, s.sizeBytes, s.costMs);

平台与调试边界

  • app-android / app-ios;H5、各家小程序不支持。
  • Android 本地真机调试需 HBuilderX ≥ 4.26(自定义调试基座),云打包不受此限。
  • iOS 端含 Swift 组件,宿主原生工程需开启「支持 Swift」。
  • 最终 App 打包由 HBuilderX / @dcloudio CLI 完成。

范围说明(MVP)

  • 生成一维条形码;条码识别/扫描(需相机/检测算法)不在本期范围。
  • 暂不渲染人眼可读的数字标注(HRI 文本);如需可在前端叠加文本。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据。所有计算/处理均在本地完成,无任何网络请求、不发送数据到任何服务器。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。