故障排除 Aspose.BarCode FOSS for Python
本指南涵盖了使用 Aspose.BarCode FOSS 为 Python 生成条形码时最常见的错误和问题。每个章节描述错误、其原因以及如何解决。
常见错误
InvalidInputError
InvalidInputError 在传递给编码器的数据不符合该符号的字符集或长度要求时被抛出。
****典型原因::
- 向仅限数字的符号传递字母字符(EAN-13、EAN-8、UPC-A、UPC-E)
- 提供的字符串长度不符合符号的固定长度要求(例如,EAN-13 需要恰好 12 或 13 位数字)
- 包含超出符号集支持范围的字符(例如 Code 39 基础模式仅支持大写字母、数字和少量特殊字符)
修复: 在调用之前验证您的输入数据 BarcodeService.generate(). 检查符号配置文件的 capabilities and known_limitations 属性用于字符集和长度约束。
from aspose_barcode_foss import BarcodeService
service = BarcodeService()
# EAN-13 requires exactly 12 or 13 digits
data = "590123412345" # 12 digits — valid
barcode = service.generate("ean13", data)EncodingError
当编码器在输入验证通过后遇到内部错误时会抛出 EncodingError。这比 InvalidInputError 少见。
****常见原因::
- 在初始验证通过但在段编码期间失败的数据(例如 QR Code 数据超出所选错误纠正级别的容量)
- 冲突的编码选项(例如请求
Code128EncodeMode.CODE_A时数据包含小写字符)
修复: 审查传递给的编码选项 generate(). 对于 Code 128,使用 Code128EncodeMode.AUTO 让编码器选择最佳子集。对于 QR Code,尝试更低的 QrErrorCorrectionLevel 或缩短数据长度。
from aspose_barcode_foss import BarcodeService, Code128Options, Code128EncodeMode
service = BarcodeService()
options = Code128Options(encode_mode=Code128EncodeMode.AUTO)
barcode = service.generate("code128", "Hello123", encode=options)SymbologyNotFoundError
SymbologyNotFoundError 在将传递给 BarcodeService.generate() 的符号名称未在 SymbologyRegistry 中注册时被抛出。
****典型原因::
- 拼写错误的符号名称(例如
"code_128"而不是"code128") - 使用库不支持的符号(该库仅支持 Code 128、Code 39、EAN-13、EAN-8、QR Code、UPC-A 和 UPC-E)
修复: 使用七个受支持的符号标识符之一: "code128", "code39", "ean13", "ean8", "qrcode", "upca", "upce". 名称不区分大小写,但必须匹配已注册的标识符。
from aspose_barcode_foss import BarcodeService
service = BarcodeService()
# Correct symbology names
barcode = service.generate("code128", "ABC-123")
barcode = service.generate("qrcode", "https://example.com")RenderingError
RenderingError 在渲染器未能从编码符号生成输出时被抛出。
****常见原因::
- 无效的
RenderOptions值(例如负的scale或module_width) - 尝试使用
PdfRenderer(在当前版本中,PDF 渲染会引发NotImplementedError)
修复: 使用 SvgRenderer or PngRenderer 而不是 PdfRenderer. 验证 RenderOptions 属性具有有效的正值。
from aspose_barcode_foss import BarcodeService, RenderOptions
from aspose_barcode_foss.rendering import SvgRenderer
service = BarcodeService()
barcode = service.generate("ean13", "590123412345")
options = RenderOptions(scale=2.0, dpi=300)
result = barcode.render(SvgRenderer(), options)UnsupportedCapabilityError 和 UnsupportedFeatureError
当符号系统不支持请求的功能时会抛出 UnsupportedCapabilityError(例如符号系统缺乏 GS1 支持时的 GS1 模式)。对于库中未实现的功能会抛出 UnsupportedFeatureError。
修复: 检查符号配置文件的 capabilities 属性以确认哪些功能可用。避免为不支持的符号请求 GS1 模式。
环境问题
Python 版本
Aspose.BarCode FOSS 需要 Python 3.12 或更高版本。如果出现 SyntaxError 或导入失败,请检查您的 Python 版本:
python --version安装问题
从源码构建该包。
该库是纯 Python,没有本机依赖。如果安装成功但导入失败,请检查是否有名为 aspose_barcode_foss.py 的本地文件遮蔽了该包。
导入错误
正确的导入方式是:
import aspose_barcode_foss或导入特定类:
from aspose_barcode_foss import BarcodeService, RenderOptions常见问题
为什么我的 EAN-13 条形码显示的数字与我输入的不同?
EAN-13 自动计算校验位。如果你提供 12 位数字,会在后面追加第 13 位。如果你提供 13 位数字,则会将最后一位作为校验位进行验证。使用 Ean13Options allow_check_digit_input 属性来控制此行为。
为什么 PDF 输出会触发 NotImplementedError?
PdfRenderer.render() 和 Barcode.to_pdf() 尚未实现。请改用 Barcode.to_svg() 或 Barcode.to_png(),或直接使用 SvgRenderer 或 PngRenderer 渲染。
如何调试可用的符号名称?
使用 SymbologyRegistry.get_definition() 检查符号是否已注册。如果抛出 SymbologyNotFoundError,则该符号不可用。支持的七种符号包括:Code 128、Code 39、EAN-13、EAN-8、QR Code、UPC-A 和 UPC-E。