Rendering del codice a barre

Rendering del codice a barre

Rendering di codici a barre

Aspose.BarCode FOSS per Python separa la codifica dal rendering. Dopo che un codice a barre è stato codificato in un EncodedSymbol, un’implementazione Renderer converte la matrice dei moduli in output visivo. La libreria include SvgRenderer e PngRenderer.


RenderOptions

RenderOptions controlla l’output visivo di tutti i renderizzatori. Passalo a to_svg() o to_png() su qualsiasi oggetto 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,
))
ProprietàTipoDescrizione
scalefloatMoltiplicatore di scala uniforme per l’intero codice a barre
dpiintRisoluzione per l’output PNG (non ha effetto su SVG)
module_widthfloatLarghezza di un modulo di codice a barre in unità utente
module_heightfloatAltezza di un modulo di codice a barre in unità utente
quiet_zonefloatSpaziatura vuota intorno al codice a barre
foreground_colorstrColore esadecimale per barre e moduli (ad esempio "#000000")
background_colorstrColore esadecimale per lo sfondo
transparent_backgroundboolSfondo trasparente per l’output PNG
show_textboolMostra il testo leggibile sotto il codice a barre
font_familystrFont per il testo leggibile
font_sizefloatDimensione del carattere per il testo leggibile dall’uomo

ResolvedRenderOptions

ResolvedRenderOptions è la configurazione completamente unita prodotta da OptionsResolver.resolve(). Combina i RenderOptions forniti dall’utente con le impostazioni predefinite SymbologyProfile. Tutte le proprietà hanno valori concreti (nessun None).

La proprietà Barcode.default_render_options contiene il RenderOptions passato al momento della generazione (o None se non fornito).


Output SVG

SvgRenderer genera l’output SVG. Chiama to_svg() su un oggetto 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() restituisce un str contenente il documento SVG completo.


Output PNG

PngRenderer genera l’output PNG. Chiama to_png() su un oggetto 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() restituisce bytes contenente i dati dell’immagine PNG.


Astrazione del renderer

La classe base astratta Renderer definisce l’interfaccia per tutti i renderer:

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

SvgRenderer e PngRenderer implementano entrambi questa interfaccia. È possibile chiamare Barcode.render(renderer, options) per utilizzare direttamente un renderer specifico:

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

Il RenderedArtifact restituito da Renderer.render() contiene:

ProprietàTipoDescrizione
data`strbytes`
media_typestrTipo MIME ("image/svg+xml" o "image/png")
backendstrIdentificatore del renderer

Layout del testo

Ogni simbologia ha un TextLayoutPolicy che determina come il testo leggibile dall’uomo viene posizionato sotto il codice a barre. Il metodo create_layout(symbol, options) restituisce un TextLayout contenente oggetti TextSegment con dati di posizione e testo.

QR Code utilizza QrTextLayoutPolicy, che fornisce un layout no-op (QR i codici non visualizzano il testo leggibile dall’uomo).


Suggerimenti e buone pratiche

  • Usa scale per dimensioni uniformi e module_width/module_height per un controllo preciso delle dimensioni — non combinare entrambi.
  • Imposta dpi=300 per l’output PNG di qualità di stampa; l’impostazione predefinita è la risoluzione dello schermo.
  • Usa transparent_background=True per i codici a barre PNG che verranno sovrapposti su sfondi colorati.
  • foreground_color e background_color accettano stringhe di colore esadecimali standard ("#RRGGBB").
  • L’output SVG è indipendente dalla risoluzione — preferisci SVG per il web e l’incorporamento in PDF.

Problemi comuni

ProblemaCausaCorrezione
Il PNG appare troppo piccoloLa scala predefinita è 1.0Aumenta scale o imposta dpi
Testo non visibileshow_text predefinito a FalseImposta show_text=True
QR code non ha testoLa simbologia di QR non supporta testo leggibile dall’uomoComportamento previsto — QR utilizza un layout di testo no-op
Colori non applicatiNome della proprietà erratoUsa i nomi delle proprietà esatti: foreground_color, background_color

Vedi anche

 Italiano