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

Přehled

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