Barkod Generation
Barkod Generation
Barkodsgenereringspåket i Aspose.BarCode FOSS för Python följer en tre-steg arkitektur: Parse → kod → render.Den högsta nivåens API (generate() och per-symbologi assistenter) orkestrar dessa steg genom BarcodeService.
Högnivå generations API
Det enklaste sättet att generera en barkod är genom per-symbologi hjälparfunktionerna:
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")Varje hjälpar returnerar en Barcode Objekt - Kall to_svg() för SVG-utgång eller to_png() för PNG utgång.
Den generiska generate() Funktionen accepterar en symbolisk namnsträng:
bc = barcode.generate("code128", "DATA")
svg = bc.to_svg()Valid symboliska namn: "code128", "code39", "ean13", "ean8", "qr", "upca", "upce".
BarcodeService
BarcodeService samordnar de tre rörledningsfaserna. det håller en SymbologyRegistry och en 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")Den generate() Metod är:
- Se upp på den
SymbologyDefinitionFrån registret - Kalla den
InputParser.parse()att validera och normalisera input - Kalla den
SymbologyEncoder.encode()att producera enEncodedSymbol - Återvänder A
Barcodeför att täcka symbolen och dess profil
SymbologyRegistry
SymbologyRegistry butiker SymbologyDefinition objekt som är nycklar till kanoniska namn och alia:
| Method | Beskrivning |
|---|---|
get_definition(name) | Reträva en fullständig symbolisk definition |
get_parser(name) | Få den InputParser För en symbologi |
get_encoder(name) | Få den SymbologyEncoder För en symbologi |
get_profile(name) | Få den SymbologyProfile med defalterade |
get_text_policy(name) | Få den TextLayoutPolicy för text rendering |
register(definition) | Registrera en ny SymbologyDefinition |
EncoderRegistry är en backward-kompatibel alias för SymbologyRegistry.
SymbologyDefinition
A och SymbologyDefinition Alla komponenter som behövs för att stödja en symbol:
| Property | Typ av | Beskrivning |
|---|---|---|
name | str | Kanoniska symboler identifierar |
parser | InputParser | Validerar och normaliserar inputdata |
encoder | SymbologyEncoder | Koda data i en modulmatrix |
profile | SymbologyProfile | Brister, kapacitet och textpolitik |
aliases | tuple[str, ...] | Alternativa namn för lookup |
EncodedSymbol
Den EncodedSymbol returnerad av en kodare innehåller:
matrix- aModuleMatrixmed barkoden logiska modulnätetmetadata- aSymbolMetadatamed symboliska namn, text visas och kodning detaljer
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 ger A get(x, y) Metoden som returnerar modulvärdet i en given position.
NormalizedPayload
Den NormalizedPayload är den mellanliggande representationen mellan parsing och kodning:
| Property | Beskrivning |
|---|---|
symbology | Namn på kanoniska symboler |
data | Uppgifter om inmatning (str eller bytes) |
input_kind | Hur inmatningen klassificerades |
code128_encode_mode | Lösad kod 128 läge (om tillämpligt) |
code39_encode_mode | Lösning i kod 39 läge (om tillämpligt) |
qr_error_correction_level | Korrigerad QR-fel (om tillämpligt) |
qr_version | Lösad QR-version (om tillämpligt) |
qr_encoding_mode | Lös QR-kodningsläge (om tillämpligt) |
OptionsResolver
OptionsResolver kombinerar användar-supported render alternativ med symboliska standard:
| Method | Beskrivning |
|---|---|
resolve(profile, options) | producerar A ResolvedRenderOptions genom att kombinera användaralternativ med profildefault |
merge_options(earlier, later) | Möt två RenderOptions (Låt senare värden överrida) |
coerce_options(options) | Normalisera råalternativ i RenderOptions |
Tips och bästa praxis
- Används av en per-symbolist hjälpare (
code128(),qr(),… etc) i stället för attgenerate()för typ säkerhet – de garanterar att rätt alternativ klass används. - Den
Barcode.symbolFastigheten ger direkt tillgång tillEncodedSymbolför anpassad rendering eller analys. BarcodeServiceär statistiskt - en instans kan generera barkoder över flera trådar.- Catch
BarcodeErrorsom en basklass för att hantera alla barkodrelaterade undantag i ett enda block.
Vanliga frågor
| Issue | Cause | Fixar |
|---|---|---|
SymbologyNotFoundError | Namn som inte är registrerat i SymbologyRegistry | Kontrollera spelling; använda kanoniska namn |
InvalidInputError | Data bryter mot symbolikkrav | Kontrollera karaktärsinställningar och längd krav |
| tomt SVG utgång | Inga kodade moduler | Verifier data är icke-vaka och giltiga för symboliken |