Устранение неполадок Aspose.BarCode FOSS for Python

Устранение неполадок 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.

См. также:

 Русский