Barcode-Generierung

Barcode-Generierung

Die Barcode-Generierungspipeline in Aspose.BarCode FOSS für Python folgt einer dreistufigen Architektur: parsen → kodieren → rendern. Der hochrangige API (generate() und pro-Symbologie-Hilfsprogramme) orchestriert diese Stufen durch BarcodeService.


High-Level-Generierung API

Der einfachste Weg, einen Barcode zu erzeugen, ist über die per-Symbologie-Hilfsfunktionen:

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

Jeder Helfer gibt ein Barcode-Objekt zurück. Rufen Sie to_svg() für SVG-Ausgabe oder to_png() für PNG-Ausgabe auf.

Die generische generate()-Funktion akzeptiert einen Symbologie-Namensstring:

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

Gültige Symbologie-Namen: "code128", "code39", "ean13", "ean8", "qr", "upca", "upce".


BarcodeService

BarcodeService koordiniert die drei Pipeline-Stufen. Es enthält ein SymbologyRegistry und ein 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")

Die generate()-Methode:

  1. Sucht das SymbologyDefinition im Register
  2. Ruft das InputParser.parse() auf, um Eingaben zu validieren und zu normalisieren
  3. Ruft das SymbologyEncoder.encode() auf, um ein EncodedSymbol zu erzeugen
  4. Gibt ein Barcode zurück, das das Symbol und sein Profil umschließt

SymbologyRegistry

SymbologyRegistry speichert SymbologyDefinition-Objekte, die nach kanonischen Namen und Aliasen indiziert sind:

MethodeBeschreibung
get_definition(name)Eine vollständige Symboldefinition abrufen
get_parser(name)Holen Sie das InputParser für eine Symbolik
get_encoder(name)Rufen Sie das SymbologyEncoder für eine Symbolik ab.
get_profile(name)Rufen Sie das SymbologyProfile mit Standardwerten ab
get_text_policy(name)Ruft das TextLayoutPolicy für die Textdarstellung ab
register(definition)Registrieren Sie ein neues SymbologyDefinition

EncoderRegistry ist ein abwärtskompatibler Alias für SymbologyRegistry.


SymbologyDefinition

Ein SymbologyDefinition bündelt alle Komponenten, die zur Unterstützung einer Symbologie benötigt werden:

EigenschaftTypBeschreibung
namestrKanonischer Symbolbezeichner
parserInputParserValidiert und normalisiert Eingabedaten
encoderSymbologyEncoderKodiert Daten in eine Modulmatrix
profileSymbologyProfileStandardwerte, Fähigkeiten und Textrichtlinie
aliasestuple[str, ...]Alternative Namen für die Suche

EncodedSymbol

Der EncodedSymbol, der von einem Encoder zurückgegeben wird, enthält:

  • matrix — ein ModuleMatrix mit dem logischen Modulgitter des Barcodes
  • metadata — ein SymbolMetadata mit dem Namen der Symbologie, dem Anzeigetext und den Kodierungsdetails
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 stellt eine get(x, y) Methode bereit, die den Modulwert an einer gegebenen Position zurückgibt.


NormalizedPayload

Der NormalizedPayload ist die Zwischendarstellung zwischen Parsing und Encoding:

EigenschaftBeschreibung
symbologyKanonischer Symbolname
dataValidierte Eingabedaten (str oder bytes)
input_kindWie die Eingabe klassifiziert wurde
code128_encode_modeAufgelöster Code 128-Modus (falls zutreffend)
code39_encode_modeAufgelöster Code 39-Modus (falls zutreffend)
qr_error_correction_levelAufgelöste QR-Fehlerkorrektur (falls zutreffend)
qr_versionAufgelöste QR Version (falls zutreffend)
qr_encoding_modeAufgelöster QR Kodierungsmodus (falls zutreffend)

OptionsResolver

OptionsResolver kombiniert benutzerdefinierte Renderoptionen mit den Vorgaben der Symbolik:

MethodeBeschreibung
resolve(profile, options)Erstelle ein ResolvedRenderOptions durch Zusammenführen von Benutzeroptionen mit Profilstandardwerten
merge_options(earlier, later)Führe zwei RenderOptions zusammen (spätere Werte überschreiben)
coerce_options(options)Normalisiere rohe Optionen in RenderOptions

Tipps und bewährte Verfahren

  • Verwenden Sie pro-Symbolik-Hilfsfunktionen (code128(), qr() usw.) anstelle von generate() für Typsicherheit — sie stellen sicher, dass die korrekte Optionsklasse verwendet wird.
  • Die Barcode.symbol Eigenschaft bietet direkten Zugriff auf das EncodedSymbol für benutzerdefiniertes Rendering oder Analyse.
  • BarcodeService ist zustandslos — eine Instanz kann Barcodes über mehrere Threads hinweg generieren.
  • Fange BarcodeError als Basisklasse ab, um alle barcodebezogenen Ausnahmen in einem einzigen Block zu behandeln.

Häufige Probleme

ProblemUrsacheBehebung
SymbologyNotFoundErrorName nicht registriert in SymbologyRegistryRechtschreibung prüfen; kanonische Namen verwenden
InvalidInputErrorDaten verstoßen gegen Symbolik-AnforderungenZeichensatz- und Längenanforderungen prüfen
Leere SVG-AusgabeKeine Module kodiertStellen Sie sicher, dass die Daten nicht leer und für die Symbolik gültig sind

Siehe auch

 Deutsch