Отображение штрихкода

Отображение штрихкода

Отображение штрих-кода

Aspose.BarCode FOSS для Python разделяет кодирование и рендеринг. После того как штрих-код закодирован в EncodedSymbol, реализация Renderer преобразует матрицу модулей в визуальный вывод. Библиотека включает SvgRenderer и PngRenderer.


RenderOptions

RenderOptions управляет визуальным выводом всех рендереров. Передайте его в to_svg() или to_png() любого объекта Barcode:

import aspose_barcode_foss as barcode
from aspose_barcode_foss import RenderOptions

bc = barcode.code128("Hello World")
svg = bc.to_svg(options=RenderOptions(
    scale=2.0,
    foreground_color="#003366",
    quiet_zone=10.0,
    show_text=True,
))
СвойствоТип:Описание:
scalefloatУниверсальный множитель масштаба для всего штрихкода
dpiintРазрешение для вывода PNG (не влияет на SVG)
module_widthfloatШирина одного модуля штрихкода в пользовательских единицах
module_heightfloatВысота одного модуля штрихкода в пользовательских единицах
quiet_zonefloatОтступ из пробельных символов вокруг штрихкода
foreground_colorstrHex-цвет для полос и модулей (например, "#000000")
background_colorstrHex-цвет для фона
transparent_backgroundboolПрозрачный фон для вывода PNG
show_textboolОтображать человекочитаемый текст под штрих-кодом
font_familystrШрифт для человекочитаемого текста
font_sizefloatРазмер шрифта для человекочитаемого текста

ResolvedRenderOptions

ResolvedRenderOptions — полностью объединённая конфигурация, созданная OptionsResolver.resolve(). Она сочетает пользовательские RenderOptions с настройками по умолчанию SymbologyProfile. Все свойства имеют конкретные значения (без None).

Свойство Barcode.default_render_options содержит RenderOptions, переданное во время генерации (или None, если не указано).


Вывод SVG

SvgRenderer генерирует SVG-вывод. Вызовите to_svg() у объекта Barcode:

bc = barcode.ean13("590123412345")
svg_string = bc.to_svg()

# With custom options
svg_custom = bc.to_svg(options=RenderOptions(
    scale=3.0,
    foreground_color="#1a1a1a",
    show_text=True,
    font_family="Helvetica",
    font_size=12.0,
))

with open("ean13.svg", "w") as f:
    f.write(svg_custom)

to_svg() возвращает str, содержащий полный документ SVG.


Вывод PNG

PngRenderer генерирует PNG-вывод. Вызовите to_png() у объекта Barcode:

bc = barcode.qr("https://example.com")
png_bytes = bc.to_png()

# With custom options
png_custom = bc.to_png(options=RenderOptions(
    scale=4.0,
    dpi=300,
    transparent_background=True,
))

with open("qr.png", "wb") as f:
    f.write(png_custom)

to_png() возвращает bytes, содержащий данные PNG-изображения.


Абстракция рендерера

Абстрактный базовый класс Renderer определяет интерфейс для всех рендереров:

class Renderer(ABC):
    def render(self, symbol, layout, options) -> RenderedArtifact: ...

SvgRenderer и PngRenderer оба реализуют этот интерфейс. Вы можете вызвать Barcode.render(renderer, options), чтобы использовать конкретный рендерер напрямую:

from aspose_barcode_foss import SvgRenderer, RenderOptions

bc = barcode.code128("DATA")
artifact = bc.render(SvgRenderer(), RenderOptions(scale=2.0))
print(artifact.media_type)  # "image/svg+xml"
print(type(artifact.data))  # <class 'str'>

RenderedArtifact

Объект RenderedArtifact, возвращаемый Renderer.render(), содержит:

СвойствоТип:Описание:
data`strbytes`
media_typestrТип MIME ("image/svg+xml" или "image/png")
backendstrИдентификатор рендерера

Разметка текста

У каждой символьной системы есть TextLayoutPolicy, определяющий, как читаемый человеком текст размещается под штрих-кодом. Метод create_layout(symbol, options) возвращает TextLayout, содержащий объекты TextSegment с данными о позиции и тексте.

QR Code использует QrTextLayoutPolicy, который обеспечивает пустую разметку (коды QR не отображают читаемый человеком текст).


Советы и лучшие практики

  • Используйте scale для одинакового размера, а module_width/module_height — для точного контроля размеров — не комбинируйте оба варианта.
  • Установите dpi=300 для PNG-вывода печатного качества; по умолчанию — разрешение экрана.
  • Используйте transparent_background=True для PNG штрихкодов, которые будут наложены на цветные фоны.
  • foreground_color и background_color принимают стандартные шестнадцатеричные строки цвета ("#RRGGBB").
  • SVG-вывод не зависит от разрешения — предпочтительно использовать SVG для веба и вставки в PDF.

Распространённые проблемы

ПроблемаПричинаИсправление
PNG выглядит слишком маленькимМасштаб по умолчанию — 1.0Увеличьте scale или задайте dpi
Текст не виденshow_text по умолчанию FalseУстановить show_text=True
QR code не содержит текстаСимволика QR не поддерживает человекочитаемый текстОжидаемое поведение — QR использует no-op компоновку текста
Цвета не примененыИмя свойства написано с ошибкойИспользуйте точные имена свойств: foreground_color, background_color

См. также:

 Русский