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:
- Sucht das
SymbologyDefinitionim Register - Ruft das
InputParser.parse()auf, um Eingaben zu validieren und zu normalisieren - Ruft das
SymbologyEncoder.encode()auf, um einEncodedSymbolzu erzeugen - Gibt ein
Barcodezurück, das das Symbol und sein Profil umschließt
SymbologyRegistry
SymbologyRegistry speichert SymbologyDefinition-Objekte, die nach kanonischen Namen und Aliasen indiziert sind:
| Methode | Beschreibung |
|---|---|
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:
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
name | str | Kanonischer Symbolbezeichner |
parser | InputParser | Validiert und normalisiert Eingabedaten |
encoder | SymbologyEncoder | Kodiert Daten in eine Modulmatrix |
profile | SymbologyProfile | Standardwerte, Fähigkeiten und Textrichtlinie |
aliases | tuple[str, ...] | Alternative Namen für die Suche |
EncodedSymbol
Der EncodedSymbol, der von einem Encoder zurückgegeben wird, enthält:
matrix— einModuleMatrixmit dem logischen Modulgitter des Barcodesmetadata— einSymbolMetadatamit 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:
| Eigenschaft | Beschreibung |
|---|---|
symbology | Kanonischer Symbolname |
data | Validierte Eingabedaten (str oder bytes) |
input_kind | Wie die Eingabe klassifiziert wurde |
code128_encode_mode | Aufgelöster Code 128-Modus (falls zutreffend) |
code39_encode_mode | Aufgelöster Code 39-Modus (falls zutreffend) |
qr_error_correction_level | Aufgelöste QR-Fehlerkorrektur (falls zutreffend) |
qr_version | Aufgelöste QR Version (falls zutreffend) |
qr_encoding_mode | Aufgelöster QR Kodierungsmodus (falls zutreffend) |
OptionsResolver
OptionsResolver kombiniert benutzerdefinierte Renderoptionen mit den Vorgaben der Symbolik:
| Methode | Beschreibung |
|---|---|
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 vongenerate()für Typsicherheit — sie stellen sicher, dass die korrekte Optionsklasse verwendet wird. - Die
Barcode.symbolEigenschaft bietet direkten Zugriff auf dasEncodedSymbolfür benutzerdefiniertes Rendering oder Analyse. BarcodeServiceist zustandslos — eine Instanz kann Barcodes über mehrere Threads hinweg generieren.- Fange
BarcodeErrorals Basisklasse ab, um alle barcodebezogenen Ausnahmen in einem einzigen Block zu behandeln.
Häufige Probleme
| Problem | Ursache | Behebung |
|---|---|---|
SymbologyNotFoundError | Name nicht registriert in SymbologyRegistry | Rechtschreibung prüfen; kanonische Namen verwenden |
InvalidInputError | Daten verstoßen gegen Symbolik-Anforderungen | Zeichensatz- und Längenanforderungen prüfen |
| Leere SVG-Ausgabe | Keine Module kodiert | Stellen Sie sicher, dass die Daten nicht leer und für die Symbolik gültig sind |