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,
))| Propiedad | Tipo | Descripción |
|---|---|---|
scale | float | Multiplicador de escala uniforme para todo el código de barras |
dpi | int | Resolución para la salida PNG (no tiene efecto en SVG) |
module_width | float | Ancho de un módulo de código de barras en unidades de usuario |
module_height | float | Altura de un módulo de código de barras en unidades de usuario |
quiet_zone | float | Relleno de espacio en blanco alrededor del código de barras |
foreground_color | str | Color hexadecimal para barras y módulos (p.ej., "#000000") |
background_color | str | Color hexadecimal para el fondo |
transparent_background | bool | Fondo transparente para la salida PNG |
show_text | bool | Mostrar texto legible debajo del código de barras |
font_family | str | Fuente para texto legible |
font_size | float | Tamañ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:
| Propiedad | Tipo | Descripción |
|---|---|---|
data | `str | bytes` |
media_type | str | Tipo MIME ("image/svg+xml" o "image/png") |
backend | str | Identificador 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
scalepara tamaños uniformes ymodule_width/module_heightpara un control preciso de dimensiones — no combines ambos. - Establezca
dpi=300para la salida PNG de calidad de impresión; el valor predeterminado es la resolución de pantalla. - Utilice
transparent_background=Truepara códigos de barras PNG que se superpondrán sobre fondos de color. foreground_colorybackground_coloraceptan 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
| Problema | Causa | Solución |
|---|---|---|
| El PNG aparece demasiado pequeño | La escala predeterminada es 1.0 | Aumente scale o establezca dpi |
| Texto no visible | show_text por defecto es False | Establecer show_text=True |
| QR code no tiene texto | La simbología de QR no admite texto legible por humanos | Comportamiento esperado — QR usa un diseño de texto no-op |
| Colores no aplicados | Nombre de la propiedad mal escrito | Utilice los nombres exactos de propiedades: foreground_color, background_color |