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,
))| 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 |