Введение

Aspose.BarCode FOSS для Python предоставляет классы параметров для каждой символогии, которые управляют поведением кодирования во всех семи поддерживаемых форматах штрихкода. Каждый класс параметров наследуется от EncodeOptions и добавляет свойства, специфичные для его символогии — режимы кодирования Code 128, выбор ASCII Code 39, уровни коррекции ошибок 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 также поддерживает свойства gs1_enabled и eci_assignment_number, унаследованные от EncodeOptions, для GS1 и метаданных ECI.

Code 39 Кодирование

Code39Options контролирует, использует ли кодировщик базовый набор из 43 символов или расширение Full ASCII. Установите full_ascii=True, чтобы включить режим Full ASCII, который кодирует полный диапазон из 128 символов ASCII с помощью пар сдвига. Опциональное свойство add_check_digit добавляет контрольную цифру modulo-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, .KANJI
  • version: версия 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():

СвойствоТип:Описание:
scalefloatКоэффициент равномерного масштабирования
dpiintРазрешение для вывода PNG
module_widthfloatШирина одного модуля штрих-кода
module_heightfloatВысота одного модуля штрих-кода
quiet_zonefloatОтступ из пробелов вокруг штрих-кода
foreground_colorstrHex-цвет для полос (например, "#000000")
background_colorstrHex-цвет для фона
transparent_backgroundboolПрозрачный фон для PNG
show_textboolПоказать читаемый человеком текст под штрих-кодом
font_familystrШрифт для читаемого человеком текста
font_sizefloatРазмер шрифта для читаемого человеком текста
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Тип:Класс OptionsКлючевые свойства
Code 1281DCode128Optionsencode_mode
Code 391DCode39Optionsfull_ascii, add_check_digit
EAN-131DEan13Optionsallow_check_digit_input
EAN-81DEan8Optionsallow_check_digit_input
QR Code2DQrOptionserror_correction_level, encoding_mode, version, mask
UPC-A1DUpcaOptionsallow_check_digit_input
UPC-E1DUpceOptionsallow_check_digit_input

Форматы вывода:

ФорматРасширениеExport
SVG.svg
PNG.png

Открытый исходный код и лицензирование

Aspose.BarCode FOSS для Python имеет лицензию MIT. Исходный код доступен на GitHub; собирайте из исходников. Нет нативных зависимостей, нет телеметрии, нет ограничений по использованию.


Начало работы

Связанные ресурсы