Generația codurilor de bare

Generația codurilor de bare

Generația codurilor de bare

Pipeline-ul de generare a codurilor de bare în Aspose.BarCode FOSS pentru Python urmează o arhitectură cu trei etape: parsa → codarea → redarea.API de nivel înalt (generate() şi per-simbologie ajutoare) orchestrează aceste etape prin intermediul BarcodeService.


API de generare la nivel înalt

Cel mai simplu mod de a genera un cod de bare este prin funcțiile auxiliare per-simbologie:

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")

Fiecare ajutator returnează un Barcode Obiectează. to_svg() pentru ieșirea SVG sau to_png() pentru ieșirea PNG.

Medicamentul generic generate() funcția acceptă un șir de nume simbolic:

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

Numele de simbolologie valabile: "code128", "code39", "ean13", "ean8", "qr", "upca", "upce".


BarcodeService

BarcodeService Coordonă cele trei etape ale conductei. SymbologyRegistry și o 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")

În ceea ce priveşte generate() metoda:

  1. Se uită la… SymbologyDefinition din registrul de înregistrare
  2. Se cheamă … InputParser.parse() validarea și normalizarea inputului;
  3. Se cheamă … SymbologyEncoder.encode() pentru a produce un EncodedSymbol
  4. Retoară o Barcode înfășurarea simbolului și a profilului acestuia;

SymbologyRegistry

SymbologyRegistry magazinele SymbologyDefinition Obiecte cu cod de identificare prin nume canonice și aliasuri:

MethodDescription
get_definition(name)Obține o definiție completă a simbolologiei.
get_parser(name)Ia-l. InputParser pentru o simbolologie
get_encoder(name)Ia-l. SymbologyEncoder pentru o simbolologie
get_profile(name)Ia-l. SymbologyProfile cu standarduri
get_text_policy(name)Ia-l. TextLayoutPolicy pentru redarea textului
register(definition)Înregistraţi un nou SymbologyDefinition

EncoderRegistry este un alias compatibil cu versiunea anterioară pentru: SymbologyRegistry.


SymbologyDefinition

A. În cazul în care: SymbologyDefinition se regăsește toate componentele necesare pentru a susține o singură simbolologie:

PropertyTypeDescription
namestrIdentificator de simbolologie canonică
parserInputParserValidează și normalizează datele de intrare
encoderSymbologyEncoderCodifică datele într-o matrice de module.
profileSymbologyProfileDefault, capacități și politică de text
aliasestuple[str, ...]Numele alternative pentru căutare

EncodedSymbol

În ceea ce priveşte EncodedSymbol returnate de un codificator conține:

  • matrix a ModuleMatrix cu rețeaua modulului logic a codului de bare;
  • metadata a SymbolMetadata cu denumirea simbolologiei, textul de afișare și detaliile codificării.
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 oferă o get(x, y) metodă care returnează valoarea modulului la o poziție dată.


NormalizedPayload

În ceea ce priveşte NormalizedPayload este reprezentarea intermediară între parcare și codificare:

PropertyDescription
symbologyNumele simbolului canonic
dataDatele de intrare validate (str sau de: bytes)
input_kindCum a fost clasificat inputul
code128_encode_modeModul de cod 128 rezolvat (dacă este cazul)
code39_encode_modeModul de cod 39 rezolvat (dacă este cazul)
qr_error_correction_levelCorectarea erorii QR rezolvată (dacă este cazul)
qr_versionVersiunea QR rezolvată (dacă este cazul)
qr_encoding_modeMod de codificare QR rezolvat (dacă este cazul)

OptionsResolver

OptionsResolver combină opțiunile de render furnizate de utilizator cu caracteristicile implicite ale simbologiei:

MethodDescription
resolve(profile, options)Produce un ResolvedRenderOptions prin fuziunea opțiunilor de utilizator cu parametrii implicit ai profilului.
merge_options(earlier, later)Fusionul doi. RenderOptions (valorile ulterioare sunt suprasolicitate)
coerce_options(options)Normalizarea opţiunilor brute în: RenderOptions

Sfaturi şi cele mai bune practici

  • Utilizați ajutoare per-simbologie (code128(), qr(), etc.) în loc de: generate() pentru siguranța tipului se asigură că este utilizată clasa de opțiuni corectă.
  • În ceea ce priveşte Barcode.symbol proprietate oferă acces direct la EncodedSymbol pentru procesarea sau analiza personalizată.
  • BarcodeService este stateless o instanță poate genera coduri de bare pe mai multe fire.
  • Catch BarcodeError ca clasă de bază pentru a gestiona toate excepțiile legate de codurile de bare într-un singur bloc.

Probleme comune

IssueCauseFixare
SymbologyNotFoundErrorNumele nu este înregistrat la: SymbologyRegistryVerificați ortografia; utilizați nume canonice
InvalidInputErrorDatele încalcă cerințele de simbolologieVerificați setul de caractere și cerințele de lungime
ieșire SVG goalăNu sunt codificate module.Verificați dacă datele nu sunt goale și valabile pentru simbolologie.

See Also

 Română