更新记录
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:编码内容字符数 ≤ 512(MAX_CONTENT_LEN),超限 →InvalidParam(模块数由内容长度决定,非固定数百)。height:条码高度(像素),范围 1..=4096,越界 →InvalidParam。scale:最窄条宽度(像素,即 xdim),范围 1..=20,越界 →InvalidParam。- 像素预算:生成位图前校验
模块数 × scale × height ≤ 64,000,000(MAX_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 /
@dcloudioCLI 完成。
范围说明(MVP)
- 仅生成一维条形码;条码识别/扫描(需相机/检测算法)不在本期范围。
- 暂不渲染人眼可读的数字标注(HRI 文本);如需可在前端叠加文本。

收藏人数:
购买普通授权版(
试用
赞赏(0)
下载 1178
赞赏 0
下载 12438100
赞赏 1934
赞赏
京公网安备:11010802035340号