Renderizado de códigos de barras

Renderizado de códigos de barras

Renderizado de códigos de barras

Aspose.BarCode FOSS para Python separa la codificación de la renderización. Después de que un código de barras se codifica en un EncodedSymbol, una implementación de Renderer convierte la matriz de módulos en salida visual. La biblioteca incluye SvgRenderer y PngRenderer.


RenderOptions

RenderOptions controla la salida visual de todos los renderizadores. Pásalo a to_svg() o to_png() en cualquier objeto 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,
))
PropiedadTipoDescripción
scalefloatMultiplicador de escala uniforme para todo el código de barras
dpiintResolución para la salida PNG (no tiene efecto en SVG)
module_widthfloatAncho de un módulo de código de barras en unidades de usuario
module_heightfloatAltura de un módulo de código de barras en unidades de usuario
quiet_zonefloatRelleno de espacio en blanco alrededor del código de barras
foreground_colorstrColor hexadecimal para barras y módulos (p.ej., "#000000")
background_colorstrColor hexadecimal para el fondo
transparent_backgroundboolFondo transparente para la salida PNG
show_textboolMostrar texto legible debajo del código de barras
font_familystrFuente para texto legible
font_sizefloatTamaño de fuente para texto legible por humanos

ResolvedRenderOptions

ResolvedRenderOptions es la configuración totalmente combinada producida por OptionsResolver.resolve(). Combina los RenderOptions proporcionados por el usuario con los valores predeterminados de SymbologyProfile. Todas las propiedades tienen valores concretos (sin None).

La propiedad Barcode.default_render_options contiene el RenderOptions pasado en el momento de la generación (o None si no se proporciona).


Salida SVG

SvgRenderer produce salida SVG. Llame a to_svg() sobre un objeto 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() devuelve un str que contiene el documento SVG completo.


Salida PNG

PngRenderer produce salida PNG. Llame a to_png() sobre un objeto 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() devuelve bytes que contiene los datos de la imagen PNG.


Abstracción del renderizador

La clase base abstracta Renderer define la interfaz para todos los renderizadores:

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

SvgRenderer y PngRenderer implementan esta interfaz. Puedes llamar a Barcode.render(renderer, options) para usar un renderizador específico directamente:

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

El RenderedArtifact devuelto por Renderer.render() contiene:

PropiedadTipoDescripción
data`strbytes`
media_typestrTipo MIME ("image/svg+xml" o "image/png")
backendstrIdentificador del renderizador

Diseño de texto

Cada simbología tiene un TextLayoutPolicy que determina cómo se posiciona el texto legible por humanos debajo del código de barras. El método create_layout(symbol, options) devuelve un TextLayout que contiene objetos TextSegment con datos de posición y texto.

QR Code usa QrTextLayoutPolicy, que proporciona un diseño sin operación (QR los códigos no muestran texto legible por humanos).


Consejos y mejores prácticas

  • Usa scale para tamaños uniformes y module_width/module_height para un control preciso de dimensiones — no combines ambos.
  • Establezca dpi=300 para la salida PNG de calidad de impresión; el valor predeterminado es la resolución de pantalla.
  • Utilice transparent_background=True para códigos de barras PNG que se superpondrán sobre fondos de color.
  • foreground_color y background_color aceptan cadenas de color hexadecimal estándar ("#RRGGBB").
  • La salida SVG es independiente de la resolución — prefiera SVG para la inserción en web y PDF.

Problemas comunes

ProblemaCausaSolución
El PNG aparece demasiado pequeñoLa escala predeterminada es 1.0Aumente scale o establezca dpi
Texto no visibleshow_text por defecto es FalseEstablecer show_text=True
QR code no tiene textoLa simbología de QR no admite texto legible por humanosComportamiento esperado — QR usa un diseño de texto no-op
Colores no aplicadosNombre de la propiedad mal escritoUtilice los nombres exactos de propiedades: foreground_color, background_color

Ver también

 Español