Geração de Código de Barras

Geração de Código de Barras

O pipeline de geração de códigos de barras em Aspose.BarCode FOSS para Python segue uma arquitetura de três estágios: analisar → codificar → renderizar. O API de alto nível (generate() e auxiliares por simbologia) orquestra essas etapas através de BarcodeService.


Geração de Alto Nível API

A maneira mais simples de gerar um código de barras é através das funções auxiliares por simbologia:

import aspose_barcode_foss as barcode

bc_128 = barcode.code128("ABC123")
bc_qr = barcode.qr("https://example.com")
bc_ean = barcode.ean13("590123412345")
bc_upca = barcode.upca("01234567890")

Cada auxiliar retorna um objeto Barcode. Chame to_svg() para saída SVG ou to_png() para saída PNG.

A função genérica generate() aceita uma string de nome de simbologia:

bc = barcode.generate("code128", "DATA")
svg = bc.to_svg()

Nomes de simbologia válidos: "code128", "code39", "ean13", "ean8", "qr", "upca", "upce".


BarcodeService

BarcodeService coordena as três etapas do pipeline. Ele contém um SymbologyRegistry e um OptionsResolver:

from aspose_barcode_foss import BarcodeService

# The default service is used by all helper functions
# You can create a custom service for testing or extension:
service = BarcodeService(registry=registry, options_resolver=resolver)
result = service.generate("code128", "DATA")

O método generate():

  1. Procura o SymbologyDefinition no registro
  2. Chama o InputParser.parse() para validar e normalizar a entrada
  3. Chama o SymbologyEncoder.encode() para produzir um EncodedSymbol
  4. Retorna um Barcode que envolve o símbolo e seu perfil

SymbologyRegistry

SymbologyRegistry armazena objetos SymbologyDefinition indexados por nomes canônicos e aliases:

MétodoDescrição
get_definition(name)Recupere uma definição completa de simbologia
get_parser(name)Obtenha o InputParser para uma simbologia
get_encoder(name)Obtenha o SymbologyEncoder para uma simbologia
get_profile(name)Obtenha o SymbologyProfile com padrões
get_text_policy(name)Obtenha o TextLayoutPolicy para renderização de texto
register(definition)Registrar um novo SymbologyDefinition

EncoderRegistry é um alias compatível retroativamente com SymbologyRegistry.


SymbologyDefinition

Um SymbologyDefinition reúne todos os componentes necessários para suportar uma simbologia:

PropriedadeTipoDescrição
namestrIdentificador de simbologia canônica
parserInputParserValida e normaliza dados de entrada
encoderSymbologyEncoderCodifica dados em uma matriz de módulo
profileSymbologyProfilePadrões, capacidades e política de texto
aliasestuple[str, ...]Nomes alternativos para lookup

EncodedSymbol

O EncodedSymbol retornado por um codificador contém:

  • matrix — um ModuleMatrix com a grade de módulos lógicos do código de barras
  • metadata — um SymbolMetadata com o nome da simbologia, texto de exibição e detalhes de codificação
bc = barcode.code128("TEST")
symbol = bc.symbol

print(f"Matrix: {symbol.matrix.width}x{symbol.matrix.height}")
print(f"Display text: {symbol.metadata.display_text}")
print(f"Symbology: {symbol.metadata.symbology}")

ModuleMatrix fornece um método get(x, y) que retorna o valor do módulo em uma posição dada.


NormalizedPayload

O NormalizedPayload é a representação intermediária entre a análise e a codificação:

PropriedadeDescrição
symbologyNome canônico da simbologia
dataDados de entrada validados (str ou bytes)
input_kindComo a entrada foi classificada
code128_encode_modeModo Code 128 resolvido (se aplicável)
code39_encode_modeModo Code 39 resolvido (se aplicável)
qr_error_correction_levelCorreção de erro QR resolvida (se aplicável)
qr_versionVersão QR resolvida (se aplicável)
qr_encoding_modeModo de codificação QR resolvido (se aplicável)

OptionsResolver

OptionsResolver mescla as opções de renderização fornecidas pelo usuário com os padrões de simbologia:

MétodoDescrição
resolve(profile, options)Produza um ResolvedRenderOptions mesclando as opções do usuário com os padrões do perfil
merge_options(earlier, later)Mescle dois RenderOptions (valores posteriores sobrescrevem)
coerce_options(options)Normalize as opções brutas em RenderOptions

Dicas e Melhores Práticas

  • Use auxiliares por simbologia (code128(), qr(), etc.) em vez de generate() para segurança de tipos — eles garantem que a classe de opções correta seja usada.
  • A propriedade Barcode.symbol fornece acesso direto ao EncodedSymbol para renderização ou análise personalizada.
  • BarcodeService é sem estado — uma instância pode gerar códigos de barras em múltiplas threads.
  • Capture BarcodeError como classe base para tratar todas as exceções relacionadas a códigos de barras em um único bloco.

Problemas Comuns

ProblemaCausaCorrigir
SymbologyNotFoundErrorNome não registrado em SymbologyRegistryVerifique a ortografia; use nomes canônicos
InvalidInputErrorOs dados violam os requisitos de simbologiaVerifique o conjunto de caracteres e os requisitos de comprimento
Saída SVG vaziaNenhum módulo codificadoVerifique se os dados não estão vazios e são válidos para a simbologia

Ver também

 Português