Vykreslování čárových kódů

Vykreslování čárových kódů

Aspose.BarCode FOSS pro Python odděluje kódování od vykreslování. Po zakódování čárového kódu do EncodedSymbol převádí implementace Renderer matici modulů na vizuální výstup. Knihovna obsahuje SvgRenderer a PngRenderer.


RenderOptions

RenderOptions řídí vizuální výstup všech vykreslovačů. Předávejte jej to_svg() nebo to_png() na libovolném objektu 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,
))
VlastnostTyp:Popis:
scalefloatJednotný násobek měřítka pro celý čárový kód
dpiintRozlišení pro výstup PNG (nemá vliv na SVG)
module_widthfloatŠířka jednoho modulu čárového kódu v uživatelských jednotkách
module_heightfloatVýška jednoho modulu čárového kódu v uživatelských jednotkách
quiet_zonefloatVycpávka bílého prostoru kolem čárového kódu
foreground_colorstrHexadecimální barva pro pruhy a moduly (např. "#000000")
background_colorstrHexadecimální barva pro pozadí
transparent_backgroundboolTransparentní pozadí pro výstup PNG
show_textboolZobrazit lidsky čitelný text pod čárovým kódem
font_familystrPísmo pro čitelný text
font_sizefloatVelikost písma pro čitelný text

ResolvedRenderOptions

ResolvedRenderOptions je plně sloučená konfigurace vytvořená OptionsResolver.resolve(). Kombinuje uživatelem dodané RenderOptions s výchozími hodnotami SymbologyProfile. Všechny vlastnosti mají konkrétní hodnoty (žádné None).

Vlastnost Barcode.default_render_options obsahuje RenderOptions předaný při generování (nebo None, pokud není poskytnut).


SVG výstup

SvgRenderer vytváří SVG výstup. Zavolejte to_svg() na objektu 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() vrací str obsahující kompletní SVG dokument.


PNG výstup

PngRenderer vytváří PNG výstup. Zavolejte to_png() na objektu 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() vrací bytes obsahující data PNG obrázku.


Abstrakce renderu

Abstraktní základní třída Renderer definuje rozhraní pro všechny renderery:

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

SvgRenderer a PngRenderer oba implementují toto rozhraní. Můžete zavolat Barcode.render(renderer, options) a použít konkrétní renderer přímo:

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

Objekt RenderedArtifact vrácený metodou Renderer.render() obsahuje:

VlastnostTyp:Popis:
data`strbytes`
media_typestrMIME typ ("image/svg+xml" nebo "image/png")
backendstrIdentifikátor renderéru

Rozložení textu

Každá symbologie má TextLayoutPolicy, který určuje, jak je lidsky čitelný text umístěn pod čárovým kódem. Metoda create_layout(symbol, options) vrací TextLayout, která obsahuje objekty TextSegment s údaji o pozici a textu.

QR Code používá QrTextLayoutPolicy, který poskytuje nečinné rozložení (QR kódy nezobrazují lidsky čitelný text).


Tipy a osvědčené postupy

  • Použijte scale pro jednotnou velikost a module_width/module_height pro přesné řízení rozměrů — nepoužívejte je dohromady.
  • Nastavte dpi=300 pro PNG výstup v tiskové kvalitě; výchozí je rozlišení obrazovky.
  • Použijte transparent_background=True pro PNG čárové kódy, které budou překryty barevnými pozadími.
  • foreground_color a background_color přijímají standardní hexadecimální řetězce barev ("#RRGGBB").
  • Výstup SVG je nezávislý na rozlišení — upřednostněte SVG pro web a vkládání do PDF.

Časté problémy

ProblémPříčinaOprava
PNG se zdá být příliš maléVýchozí měřítko je 1,0Zvyšte scale nebo nastavte dpi
Text není viditelnýshow_text má výchozí hodnotu FalseNastavit show_text=True
QR code nemá žádný textQR symbologie nepodporuje text čitelný pro člověkaOčekávané chování — QR používá nečinné rozvržení textu
Barvy nebyly použityNázev vlastnosti je špatně napsánPoužijte přesné názvy vlastností: foreground_color, background_color

Viz také:

 Čeština