Redare cod de bare

Redare cod de bare

Redare coduri de bare

Aspose.BarCode FOSS pentru Python separă codificarea de redare. După ce un cod de bare este codificat într-un EncodedSymbol, o implementare Renderer convertește matricea de module în ieșire vizuală. Biblioteca include SvgRenderer și PngRenderer.


RenderOptions

RenderOptions controlează ieșirea vizuală a tuturor redatoarelor. Transmite-l către to_svg() sau to_png() pe orice obiect 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,
))
ProprietateTipDescriere:
scalefloatMultiplicator de scară uniform pentru întregul cod de bare
dpiintRezoluție pentru ieșirea PNG (nu are efect asupra SVG)
module_widthfloatLățimea unui modul de cod de bare în unități de utilizator
module_heightfloatÎnălțimea unui modul de cod de bare în unități de utilizator
quiet_zonefloatSpațiu alb de umplere în jurul codului de bare
foreground_colorstrCuloare hex pentru bare și module (de exemplu, "#000000")
background_colorstrCuloare hex pentru fundal
transparent_backgroundboolFundal transparent pentru ieșire PNG
show_textboolAfișați textul lizibil sub codul de bare
font_familystrFont pentru textul lizibil
font_sizefloatMărimea fontului pentru textul ușor de citit

ResolvedRenderOptions

ResolvedRenderOptions este configurația complet îmbinată produsă de OptionsResolver.resolve(). Combină RenderOptions furnizate de utilizator cu valorile implicite SymbologyProfile. Toate proprietățile au valori concrete (fără None).

Proprietatea Barcode.default_render_options conține RenderOptions transmisă la momentul generării (sau None dacă nu este furnizată).


Ieșire SVG

SvgRenderer produce ieșire SVG. Apelă to_svg() pe un obiect 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() returnează un str care conține documentul SVG complet.


Ieșire PNG

PngRenderer produce ieșire PNG. Apelă to_png() pe un obiect 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() returnează bytes care conține datele imaginii PNG.


Abstracție a Renderer-ului

Clasa de bază abstractă Renderer definește interfața pentru toți rendererii:

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

SvgRenderer și PngRenderer implementează ambele această interfață. Poți apela Barcode.render(renderer, options) pentru a utiliza direct un renderer specific:

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

Obiectul RenderedArtifact returnat de Renderer.render() conține:

ProprietateTipDescriere:
data`strbytes`
media_typestrTip MIME ("image/svg+xml" sau "image/png")
backendstrIdentificator renderer

Aspect text

Fiecare simbologie are un TextLayoutPolicy care determină modul în care textul lizibil pentru om este poziționat sub codul de bare. Metoda create_layout(symbol, options) returnează un TextLayout care conține obiecte TextSegment cu date de poziție și text.

QR Code folosește QrTextLayoutPolicy, care oferă un layout fără efect (QR codurile nu afișează text lizibil pentru om).


Sfaturi și cele mai bune practici

  • Folosește scale pentru dimensionare uniformă și module_width/module_height pentru control precis al dimensiunilor — nu combina ambele.
  • Setați dpi=300 pentru ieșire PNG de calitate tipărit; implicit este rezoluția ecranului.
  • Utilizați transparent_background=True pentru coduri de bare PNG care vor fi suprapuse pe fundaluri colorate.
  • foreground_color și background_color acceptă șiruri de culori hex standard ("#RRGGBB").
  • Ieșirea SVG este independentă de rezoluție — preferați SVG pentru web și încorporarea în PDF.

Probleme comune

ProblemăCauzăRemediere
PNG apare prea micScara implicită este 1.0Măriți scale sau setați dpi
Textul nu este vizibilshow_text are ca valoare implicită FalseSetați show_text=True
QR code nu are textQR simbolistica nu suportă text lizibil de către omComportament așteptat — QR folosește un layout de text fără efect
Culorile nu sunt aplicateNumele proprietății scris greșitUtilizați numele exacte ale proprietăților: foreground_color, background_color

Vezi și:

 Română