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à | Tipo | Descrizione |
|---|---|---|
scale | float | Moltiplicatore di scala uniforme per l’intero codice a barre |
dpi | int | Risoluzione per l’output PNG (non ha effetto su SVG) |
module_width | float | Larghezza di un modulo di codice a barre in unità utente |
module_height | float | Altezza di un modulo di codice a barre in unità utente |
quiet_zone | float | Spaziatura vuota intorno al codice a barre |
foreground_color | str | Colore esadecimale per barre e moduli (ad esempio "#000000") |
background_color | str | Colore esadecimale per lo sfondo |
transparent_background | bool | Sfondo trasparente per l’output PNG |
show_text | bool | Mostra il testo leggibile sotto il codice a barre |
font_family | str | Font per il testo leggibile |
font_size | float | Dimensione 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à | Tipo | Descrizione |
|---|---|---|
data | `str | bytes` |
media_type | str | Tipo MIME ("image/svg+xml" o "image/png") |
backend | str | Identificatore 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
scaleper dimensioni uniformi emodule_width/module_heightper un controllo preciso delle dimensioni — non combinare entrambi. - Imposta
dpi=300per l’output PNG di qualità di stampa; l’impostazione predefinita è la risoluzione dello schermo. - Usa
transparent_background=Trueper i codici a barre PNG che verranno sovrapposti su sfondi colorati. foreground_colorebackground_coloraccettano stringhe di colore esadecimali standard ("#RRGGBB").- L’output SVG è indipendente dalla risoluzione — preferisci SVG per il web e l’incorporamento in PDF.
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
| Il PNG appare troppo piccolo | La scala predefinita è 1.0 | Aumenta scale o imposta dpi |
| Testo non visibile | show_text predefinito a False | Imposta show_text=True |
| QR code non ha testo | La simbologia di QR non supporta testo leggibile dall’uomo | Comportamento previsto — QR utilizza un layout di testo no-op |
| Colori non applicati | Nome della proprietà errato | Usa i nomi delle proprietà esatti: foreground_color, background_color |