Barcodegeneratie
Barcodegeneratie
De barcode-generatie-pipeline in Aspose.BarCode FOSS voor Python volgt een drie-stappen-architectuur: ontleden → coderen → renderen. De high-level API (generate() en per-symbology helpers) orkestreert deze fasen via BarcodeService.
Hoog-niveau Generatie API
De eenvoudigste manier om een barcode te genereren is via de per-symbologie-helperfuncties:
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")Elke helper retourneert een Barcode object. Roep to_svg() aan voor SVG-uitvoer of to_png() voor PNG-uitvoer.
De generieke generate() functie accepteert een symbologie-naam string:
bc = barcode.generate("code128", "DATA")
svg = bc.to_svg()Geldige symbologie-namen: "code128", "code39", "ean13", "ean8", "qr", "upca", "upce".
BarcodeService
BarcodeService coördineert de drie pijplijnfasen. Het bevat een SymbologyRegistry en een 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")De generate() methode:
- Zoekt de
SymbologyDefinitionop in het register - Roept de
InputParser.parse()aan om invoer te valideren en te normaliseren - Roept de
SymbologyEncoder.encode()aan om eenEncodedSymbolte produceren - Retourneert een
Barcodedie het symbool en zijn profiel omsluit
SymbologyRegistry
SymbologyRegistry slaat SymbologyDefinition objecten op die worden geïdentificeerd aan de hand van canonieke namen en aliassen:
| Methode | Beschrijving |
|---|---|
get_definition(name) | Haal een volledige symbologie-definitie op |
get_parser(name) | Haalt de InputParser op voor een symbologie |
get_encoder(name) | Haal de SymbologyEncoder op voor een symbologie |
get_profile(name) | Haalt de SymbologyProfile op met standaardwaarden |
get_text_policy(name) | Haal de TextLayoutPolicy op voor tekstweergave |
register(definition) | Registreer een nieuwe SymbologyDefinition |
EncoderRegistry is een achterwaarts-compatibel alias voor SymbologyRegistry.
SymbologyDefinition
Een SymbologyDefinition bundelt alle componenten die nodig zijn om één symbologie te ondersteunen:
| Eigenschap | Type | Beschrijving |
|---|---|---|
name | str | Canonieke symboolidentificatie |
parser | InputParser | Valideert en normaliseert invoergegevens |
encoder | SymbologyEncoder | Encodeert gegevens in een modulematrix |
profile | SymbologyProfile | Standaardwaarden, mogelijkheden en tekstbeleid |
aliases | tuple[str, ...] | Alternatieve namen voor opzoeken |
EncodedSymbol
De EncodedSymbol die door een encoder wordt geretourneerd, bevat:
matrix— eenModuleMatrixmet het logische module-rooster van de barcodemetadata— eenSymbolMetadatamet de symbologienaam, weergavetekst en coderingsdetails
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 biedt een get(x, y) methode die de modulewaarde teruggeeft op een gegeven positie.
NormalizedPayload
De NormalizedPayload is de tussenliggende representatie tussen parsing en codering:
| Eigenschap | Beschrijving |
|---|---|
symbology | Canonieke symboolnaam |
data | Gevalideerde invoergegevens (str of bytes) |
input_kind | Hoe de invoer werd geclassificeerd |
code128_encode_mode | Opgeloste Code 128 modus (indien van toepassing) |
code39_encode_mode | Opgeloste Code 39 modus (indien van toepassing) |
qr_error_correction_level | Opgeloste QR foutcorrectie (indien van toepassing) |
qr_version | Opgeloste QR versie (indien van toepassing) |
qr_encoding_mode | Opgeloste QR coderingsmodus (indien van toepassing) |
OptionsResolver
OptionsResolver voegt door de gebruiker opgegeven renderopties samen met de symbologie-standaardinstellingen:
| Methode | Beschrijving |
|---|---|
resolve(profile, options) | Genereer een ResolvedRenderOptions door gebruikersopties te combineren met profielstandaardinstellingen |
merge_options(earlier, later) | Voeg twee RenderOptions samen (latere waarden overschrijven) |
coerce_options(options) | Normaliseer ruwe opties naar RenderOptions |
Tips en beste praktijken
- Gebruik per-symboolhelpers (
code128(),qr(), enz.) in plaats vangenerate()voor typeveiligheid — ze zorgen ervoor dat de juiste optiesklasse wordt gebruikt. - De
Barcode.symboleigenschap geeft directe toegang tot deEncodedSymbolvoor aangepaste weergave of analyse. BarcodeServiceis stateless — één instantie kan barcodes genereren over meerdere threads.- Vang
BarcodeErrorop als een basisklasse om alle barcode-gerelateerde uitzonderingen in één blok af te handelen.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
SymbologyNotFoundError | Naam niet geregistreerd in SymbologyRegistry | Controleer spelling; gebruik canonieke namen |
InvalidInputError | Data schendt symbologie-eisen | Controleer de tekenset- en lengtvereisten |
| Lege SVG-uitvoer | Geen modules gecodeerd | Verifieer dat de data niet leeg is en geldig voor de symboliek |