介绍
Aspose.BarCode FOSS for Python 提供针对每种符号的选项类,用于控制所有七种受支持的条形码格式的编码行为。每个选项类继承自 EncodeOptions,并添加了特定于其符号的属性——Code 128 编码模式、Code 39 ASCII 选择、QR 错误纠正级别,以及 EAN/UPC 校验位处理。
本文介绍每个选项类、其属性以及可运行的代码示例。这些类可从顶层 aspose_barcode_foss 包中获取。
关键特性
Code 128 编码模式
Code128Options 控制编码器使用的 Code 128 字符集。encode_mode 属性接受一个 Code128EncodeMode 枚举值:AUTO、CODE_A、CODE_B、CODE_C、CODE_AB、CODE_AC 或 CODE_BC。AUTO 自动选择最紧凑的编码。CODE_C 针对仅数字数据进行优化(将数字对编码为单个代码点)。
import aspose_barcode_foss as barcode
from aspose_barcode_foss import Code128Options, Code128EncodeMode
bc = barcode.code128(
"1234567890",
encode=Code128Options(encode_mode=Code128EncodeMode.CODE_C),
)
svg = bc.to_svg()
Code 128 还支持从 EncodeOptions 继承的 gs1_enabled 和 eci_assignment_number 属性,用于 GS1 和 ECI 元数据。
Code 39 编码
Code39Options 控制编码器是使用基于43字符集还是完整ASCII扩展。将 full_ascii=True 设置为启用完整ASCII模式,该模式使用移位对对完整的128字符ASCII范围进行编码。可选的 add_check_digit 属性会附加一个模43校验位。
import aspose_barcode_foss as barcode
from aspose_barcode_foss import Code39Options
bc = barcode.code39(
"Hello",
encode=Code39Options(full_ascii=True, add_check_digit=True),
)
svg = bc.to_svg()
QR Code 配置
QrOptions 提供了在受支持的符号体系中最丰富的配置集合:
error_correction_level:QrErrorCorrectionLevel.L(7%),.M(15%),.Q(25%),.H(30%)encoding_mode:QrEncodeMode.AUTO,.NUMERIC,.ALPHANUMERIC,.BYTE,.KANJIversion: QR 版本 (1–40),控制符号大小mask: 掩码模式 (0–7) 用于手动选择
import aspose_barcode_foss as barcode
from aspose_barcode_foss import QrOptions, QrErrorCorrectionLevel, QrEncodeMode
bc = barcode.qr(
"https://example.com/product/12345",
encode=QrOptions(
error_correction_level=QrErrorCorrectionLevel.Q,
encoding_mode=QrEncodeMode.BYTE,
),
)
png_bytes = bc.to_png()
EAN 和 UPC 校验位
Ean13Options、Ean8Options、UpcaOptions 和 UpceOptions 各自拥有一个 allow_check_digit_input 属性。默认情况下,库会自动根据数据计算校验位。如果你的数据已经包含校验位,请设置 allow_check_digit_input=True。
import aspose_barcode_foss as barcode
from aspose_barcode_foss import Ean13Options
# Automatic check digit (12 digits in, library appends the 13th)
bc = barcode.ean13("590123412345")
svg = bc.to_svg()
# Pre-computed check digit (13 digits, library validates)
bc2 = barcode.ean13(
"5901234123457",
encode=Ean13Options(allow_check_digit_input=True),
)
渲染选项
RenderOptions 适用于所有符号系统并控制视觉输出。将其传递给 to_svg() 或 to_png():
| 属性 | 类型 | 描述 |
|---|---|---|
scale | float | 统一缩放乘数 |
dpi | int | PNG 输出的分辨率 |
module_width | float | 一个条码模块的宽度 |
module_height | float | 一个条码模块的高度 |
quiet_zone | float | 条码周围的空白填充 |
foreground_color | str | 条形的十六进制颜色(例如,"#000000") |
background_color | str | 背景的十六进制颜色 |
transparent_background | bool | PNG 的透明背景 |
show_text | bool | 在条码下方显示可读文本 |
font_family | str | 可读文本的字体 |
font_size | float | 人类可读文本的字体大小 |
import aspose_barcode_foss as barcode
from aspose_barcode_foss import RenderOptions
bc = barcode.upca("01234567890")
png = bc.to_png(options=RenderOptions(
scale=3.0,
dpi=300,
foreground_color="#1a1a1a",
background_color="#ffffff",
show_text=True,
font_family="Courier New",
))
错误处理
所有编码选项的验证都在解析时进行。如果提供了无效数据或不兼容的选项,库会在任何编码开始之前抛出特定类型的异常:
InvalidInputError— 数据包含符号系统不支持的字符EncodingError— 编码失败(例如,数据超出容量)SymbologyNotFoundError— 传递给generate()的符号名称无法识别UnsupportedCapabilityError— 此符号不支持请求的功能
所有异常类均继承自 BarcodeError。
快速入门
git clone https://github.com/aspose-barcode-foss/Aspose.BarCode-FOSS-for-Python.git
cd Aspose.BarCode-FOSS-for-Python
pip install -e .使用不同的编码选项生成条形码并保存它们:
import aspose_barcode_foss as barcode
from aspose_barcode_foss import (
Code128Options, Code128EncodeMode,
QrOptions, QrErrorCorrectionLevel,
RenderOptions,
)
# Code 128 in CODE_C mode (compact digit encoding)
c128 = barcode.code128(
"9876543210",
encode=Code128Options(encode_mode=Code128EncodeMode.CODE_C),
)
with open("code128.svg", "w") as f:
f.write(c128.to_svg())
# QR with high error correction
qr = barcode.qr(
"https://example.com",
encode=QrOptions(error_correction_level=QrErrorCorrectionLevel.H),
)
with open("qr.png", "wb") as f:
f.write(qr.to_png(options=RenderOptions(scale=4.0)))
# EAN-13 with custom colors
ean = barcode.ean13("590123412345")
with open("ean13.svg", "w") as f:
f.write(ean.to_svg(options=RenderOptions(
foreground_color="#003366",
show_text=True,
)))
支持的格式
| Symbology | 类型 | 选项类 | 关键属性 |
|---|---|---|---|
| Code 128 | 1D | Code128Options | encode_mode |
| Code 39 | 1D | Code39Options | full_ascii, add_check_digit |
| EAN-13 | 1D | Ean13Options | allow_check_digit_input |
| EAN-8 | 1D | Ean8Options | allow_check_digit_input |
| QR Code | 2D | QrOptions | error_correction_level, encoding_mode, version, mask |
| UPC-A | 1D | UpcaOptions | allow_check_digit_input |
| UPC-E | 1D | UpceOptions | allow_check_digit_input |
输出格式:
| 格式 | 扩展 | Export |
|---|---|---|
| SVG | .svg | ✓ |
| PNG | .png | ✓ |
开源与许可
Aspose.BarCode FOSS for Python 采用 MIT 许可证。源代码可在 GitHub 获取;请从源码构建。无本机依赖,无遥测,无使用限制。