Введение
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,.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 | Hex-цвет для полос (например, "#000000") |
background_color | str | Hex-цвет для фона |
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 | Тип: | Класс Options | Ключевые свойства |
|---|---|---|---|
| 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 для Python имеет лицензию MIT. Исходный код доступен на GitHub; собирайте из исходников. Нет нативных зависимостей, нет телеметрии, нет ограничений по использованию.