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,
))| Vlastnost | Typ: | Popis: |
|---|---|---|
scale | float | Jednotný násobek měřítka pro celý čárový kód |
dpi | int | Rozlišení pro výstup PNG (nemá vliv na SVG) |
module_width | float | Šířka jednoho modulu čárového kódu v uživatelských jednotkách |
module_height | float | Výška jednoho modulu čárového kódu v uživatelských jednotkách |
quiet_zone | float | Vycpávka bílého prostoru kolem čárového kódu |
foreground_color | str | Hexadecimální barva pro pruhy a moduly (např. "#000000") |
background_color | str | Hexadecimální barva pro pozadí |
transparent_background | bool | Transparentní pozadí pro výstup PNG |
show_text | bool | Zobrazit lidsky čitelný text pod čárovým kódem |
font_family | str | Písmo pro čitelný text |
font_size | float | Velikost 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:
| Vlastnost | Typ: | Popis: |
|---|---|---|
data | `str | bytes` |
media_type | str | MIME typ ("image/svg+xml" nebo "image/png") |
backend | str | Identifiká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
scalepro jednotnou velikost amodule_width/module_heightpro přesné řízení rozměrů — nepoužívejte je dohromady. - Nastavte
dpi=300pro PNG výstup v tiskové kvalitě; výchozí je rozlišení obrazovky. - Použijte
transparent_background=Truepro PNG čárové kódy, které budou překryty barevnými pozadími. foreground_colorabackground_colorpř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ém | Příčina | Oprava |
|---|---|---|
| PNG se zdá být příliš malé | Výchozí měřítko je 1,0 | Zvyšte scale nebo nastavte dpi |
| Text není viditelný | show_text má výchozí hodnotu False | Nastavit show_text=True |
| QR code nemá žádný text | QR symbologie nepodporuje text čitelný pro člověka | Očekávané chování — QR používá nečinné rozvržení textu |
| Barvy nebyly použity | Název vlastnosti je špatně napsán | Použijte přesné názvy vlastností: foreground_color, background_color |