Generování čárových kódů

Generování čárových kódů

Generační pipeline čárových kódů v Aspose.BarCode FOSS pro Python následuje třístupňovou architekturu: parsování → kódování → vykreslení. Vysoceúrovňový API (generate() a pomocníci pro jednotlivé symboliky) orchestruje tyto fáze prostřednictvím BarcodeService.


Generování na vysoké úrovni API

Nejjednodušší způsob, jak vygenerovat čárový kód, je pomocí pomocných funkcí pro jednotlivé symboliky:

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

Každý pomocník vrací objekt Barcode. Zavolejte to_svg() pro výstup SVG nebo to_png() pro výstup PNG.

Obecná funkce generate() přijímá řetězec s názvem symboliky:

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

Platné názvy symbolik: "code128", "code39", "ean13", "ean8", "qr", "upca", "upce".


BarcodeService

BarcodeService koordinuje tři fáze potrubí. Obsahuje SymbologyRegistry a 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")

Metoda generate():

  1. Vyhledá SymbologyDefinition v registru
  2. Zavolá InputParser.parse() k ověření a normalizaci vstupu
  3. Zavolá SymbologyEncoder.encode() k vytvoření EncodedSymbol
  4. Vrátí Barcode obalující symbol a jeho profil

SymbologyRegistry

SymbologyRegistry ukládá objekty SymbologyDefinition klíčované kanonickými názvy a aliasy:

MetodaPopis:
get_definition(name)Načíst kompletní definici symboliky
get_parser(name)Získat InputParser pro symbologii
get_encoder(name)Získat SymbologyEncoder pro symboliku
get_profile(name)Získejte SymbologyProfile s výchozími hodnotami
get_text_policy(name)Získá TextLayoutPolicy pro vykreslování textu
register(definition)Zaregistrujte nový SymbologyDefinition

EncoderRegistry je zpětně kompatibilní alias pro SymbologyRegistry.


SymbologyDefinition

SymbologyDefinition balí všechny komponenty potřebné k podpoře jedné symboliky:

VlastnostTyp:Popis:
namestrKanoniční identifikátor symboliky
parserInputParserValiduje a normalizuje vstupní data
encoderSymbologyEncoderKóduje data do modulové matice
profileSymbologyProfileVýchozí nastavení, schopnosti a textová politika
aliasestuple[str, ...]Alternativní názvy pro vyhledávání

EncodedSymbol

Vrácený EncodedSymbol z enkodéru obsahuje:

  • matrixModuleMatrix s logickou mřížkou modulů čárového kódu
  • metadataSymbolMetadata s názvem symboliky, zobrazovacím textem a podrobnostmi kódování
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 poskytuje get(x, y) metodu, která vrací hodnotu modulu na dané pozici.


NormalizedPayload

NormalizedPayload je mezilehlá reprezentace mezi parsováním a kódováním:

VlastnostPopis:
symbologyKanoniální název symboliky
dataOvěřená vstupní data (str nebo bytes)
input_kindJak byl vstup klasifikován
code128_encode_modeVyřešený režim Code 128 (je-li použitelné)
code39_encode_modeVyřešený režim Code 39 (je-li relevantní)
qr_error_correction_levelVyřešená korekce chyb QR (je-li relevantní)
qr_versionVyřešená verze QR (je-li to použitelné)
qr_encoding_modeVyřešený režim kódování QR (je-li to použitelné)

OptionsResolver

OptionsResolver sloučuje uživatelem dodané renderovací možnosti se symbologickými výchozími hodnotami:

MetodaPopis:
resolve(profile, options)Vytvořte ResolvedRenderOptions sloučením uživatelských možností s výchozími nastaveními profilu
merge_options(earlier, later)Sloučte dva RenderOptions (hodnoty z pozdějšího přepíší)
coerce_options(options)Normalizovat surové možnosti do RenderOptions

Tipy a osvědčené postupy

  • Používejte pomocníky pro každou symbologii (code128(), qr(), atd.) místo generate() pro typovou bezpečnost — zajišťují, že je použita správná třída možností.
  • Vlastnost Barcode.symbol poskytuje přímý přístup k EncodedSymbol pro vlastní renderování nebo analýzu.
  • BarcodeService je bezstavový — jedna instance může generovat čárové kódy napříč více vlákny.
  • Zachyťte BarcodeError jako základní třídu pro zpracování všech výjimek souvisejících s čárovými kódy v jednom bloku.

Běžné problémy

ProblémPříčinaOprava
SymbologyNotFoundErrorNázev není zaregistrován v SymbologyRegistryZkontrolujte pravopis; použijte kanonické názvy
InvalidInputErrorData porušují požadavky na symbolikuZkontrolujte znakovou sadu a požadavky na délku
Prázdný výstup SVGNebyly zakódovány žádné modulyOvěřte, že data nejsou prázdná a jsou platná pro symboliku

Viz také:

 Čeština