Generació de còdes de barres
Generació de còdes de barres
La línia de generació de còdes de barres en Aspose.BarCode FOSS per Python segueix una arquitectura de tres etapes: parse → encode → render.L’API d’alt nivell (generate() i per-simboliològicament ajudants) orquestra aquestes etapes a través de la BarcodeService.
API de generació d’alt nivell
La manera més senzilla de generar un codi de barres és a través de les funcions auxiliars per-simbolisme:
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")Cada auxiliar retorna un Barcode Objecte. to_svg() per a sortida SVG o to_png() per a la sortida PNG.
El genèric generate() la funció accepta una cadena de noms simbòlics:
bc = barcode.generate("code128", "DATA")
svg = bc.to_svg()Noms de simbologia vàlids: "code128", "code39", "ean13", "ean8", "qr", "upca", "upce".
BarcodeService
BarcodeService coordina les tres etapes del pipeline. SymbologyRegistry i un 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")El generate() mètode:
- Mira el
SymbologyDefinitiondel registre. - L’anomenen el
InputParser.parse()validar i normalitzar la entrada. - L’anomenen el
SymbologyEncoder.encode()per produir unEncodedSymbol - Retorna a
Barcodeenvoltar el símbol i el seu perfil.
SymbologyRegistry
SymbologyRegistry botigues SymbologyDefinition objectes encodats per noms canònics i aliases:
| Method | Description |
|---|---|
get_definition(name) | Obtenir una definició completa de la simbologia |
get_parser(name) | Agafa el… InputParser per a una simbologia |
get_encoder(name) | Agafa el… SymbologyEncoder per a una simbologia |
get_profile(name) | Agafa el… SymbologyProfile amb paràmetres predeterminats |
get_text_policy(name) | Agafa el… TextLayoutPolicy per a la reproducció de text |
register(definition) | Registreu un nou SymbologyDefinition |
EncoderRegistry és un alias compatible amb l’esquena per a: SymbologyRegistry.
SymbologyDefinition
A. El dia de la mort: SymbologyDefinition agrupa tots els components necessaris per donar suport a una simbologia:
| Property | Type | Description |
|---|---|---|
name | str | Identificador de simbologia canònica |
parser | InputParser | Valida i normalitza les dades d’entrada |
encoder | SymbologyEncoder | Codifica dades en una matriu de mòduls. |
profile | SymbologyProfile | Defaults, capacitats i política de text |
aliases | tuple[str, ...] | Noms alternatius per a la recerca |
EncodedSymbol
El EncodedSymbol retornat per un codificador conté:
matrixaModuleMatrixamb la xarxa de mòdul lògic del codi de barres.metadataaSymbolMetadataamb el nom de la simbologia, text d’exposició i detalls d"encriptació.
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 proporciona un get(x, y) mètode que retorna el valor del mòdul en una posició determinada.
NormalizedPayload
El NormalizedPayload és la representació intermèdia entre l’anàlisi i el codificació:
| Property | Description |
|---|---|
symbology | Nom de simbologia canònica |
data | Dades d’entrada validades (str o de la seva bytes) |
input_kind | Com es va classificar l’entrada |
code128_encode_mode | Mòdi de codi 128 resolt (si és aplicable) |
code39_encode_mode | Modo de codi 39 resolt (si és aplicable) |
qr_error_correction_level | Correcció d’error QR resolt (si és aplicable) |
qr_version | Versió QR resolt (si és aplicable) |
qr_encoding_mode | Mètode de codificació QR resolt (si és aplicable) |
OptionsResolver
OptionsResolver fusiona les opcions de renderizació proporcionades per l’usuari amb els paràmetres predeterminats de simbologia:
| Method | Description |
|---|---|
resolve(profile, options) | Produir un ResolvedRenderOptions fusionant les opcions d’usuari amb els paràmetres predeterminats del perfil. |
merge_options(earlier, later) | Fusió 2 RenderOptions (valors posteriors anulen) |
coerce_options(options) | Normalitzar les opcions brutes en: RenderOptions |
Consells i millors pràctiques
- Utilitzar ajudants per-simbol·li (
code128(),qr(), etc.) en comptes degenerate()per a la seguretat de tipus asseguren que s’utilitza la classe d’opcions correcta. - El
Barcode.symbolLa propietat dóna accés directe al centre de la ciutat.EncodedSymbolper a renderi o anàlisi personalitzats. BarcodeServiceés sense estat una instància pot generar codis de barres en múltiples fils.- Catch
BarcodeErrorcom a classe base per tractar totes les excepcions relacionades amb els codis de barres en un sol bloc.
Problemàtiques comuns
| Issue | Cause | Correcció |
|---|---|---|
SymbologyNotFoundError | Nom no registrat en: SymbologyRegistry | Comprova l’ortografia; utilitza noms canònics. |
InvalidInputError | Les dades infringeixen els requisits de simbologia. | Comprovar els requisits de conjunt i longitud dels caràcters |
| Exportació SVG buida | No hi ha mòduls codificats. | Verificar que les dades no són buides i són vàlides per a la simbologia. |