Barcode génération
Barcode génération
Le pipeline de génération de code bar dans Aspose.BarCode FOSS pour Python suit une architecture à trois étapes: Parse → encode → rendu.Le niveau de l’AFP (generate() et par-symbologie assistants) orchestrez ces étapes à travers BarcodeService.
API de génération élevée
La façon la plus simple de générer un code bar est par les fonctions d’aide per-symbologie :
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")Chaque assistant revient à un Barcode Objet : appels to_svg() pour la production de SVG ou to_png() pour la production de PNG.
Le générique generate() La fonction accepte une string de nom symbologique :
bc = barcode.generate("code128", "DATA")
svg = bc.to_svg()Nom de symbologie : "code128", "code39", "ean13", "ean8", "qr", "upca", "upce".
BarcodeService
BarcodeService Il coordonne les trois étapes du pipeline.Il a une SymbologyRegistry et 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")Le generate() Méthode :
- Regardez le
SymbologyDefinitiondu registre - appelle le
InputParser.parse()Valider et normaliser les entrées - appelle le
SymbologyEncoder.encode()Pour produire unEncodedSymbol - Retour à A
Barcode- la mise en place du symbole et de son profil
SymbologyRegistry
SymbologyRegistry Les boutiques SymbologyDefinition Les objets clés par des noms canoniques et des alliages :
| Method | Description |
|---|---|
get_definition(name) | Retrise une définition symbologique complète |
get_parser(name) | Obtenez le InputParser Pour une symbologie |
get_encoder(name) | Obtenez le SymbologyEncoder Pour une symbologie |
get_profile(name) | Obtenez le SymbologyProfile avec défauts |
get_text_policy(name) | Obtenez le TextLayoutPolicy Pour le texte de rendu |
register(definition) | Enregistrer un nouveau SymbologyDefinition |
EncoderRegistry est un alias compatible pour SymbologyRegistry.
SymbologyDefinition
A SymbologyDefinition Tous les composants sont mis en place pour soutenir une symbologie :
| Property | Type | Description |
|---|---|---|
name | str | Identification symbologique canonique |
parser | InputParser | Validation et normalisation des données d’entrée |
encoder | SymbologyEncoder | Encoder les données dans une matrice module |
profile | SymbologyProfile | Défauts, capacités et politique de texte |
aliases | tuple[str, ...] | Les noms alternatifs pour le lookup |
EncodedSymbol
Le EncodedSymbol Remboursé par un encoder contient :
matrix- AModuleMatrixavec le réseau logique du code barmetadata- ASymbolMetadataavec le nom symbologique, le texte d’affichage et les détails de codage
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 Il fournit A get(x, y) méthode qui retourne la valeur du module à une position donnée.
NormalizedPayload
Le NormalizedPayload Il s’agit de la représentation intermédiaire entre partage et codage :
| Property | Description |
|---|---|
symbology | Nom de symbologie canonique |
data | Les données de l’entrée (str ou bytes) |
input_kind | Comment l’entrée a été classée |
code128_encode_mode | Modification de code 128 (si nécessaire) |
code39_encode_mode | Modification du code 39 (si nécessaire) |
qr_error_correction_level | Correction d’erreur QR (si nécessaire) |
qr_version | Version QR résolue (si nécessaire) |
qr_encoding_mode | Modes de codage QR résolu (si nécessaire) |
OptionsResolver
OptionsResolver Mélangez les options de rendement fournies par l’utilisateur avec des défauts symbologiques :
| Method | Description |
|---|---|
resolve(profile, options) | Produit A ResolvedRenderOptions en combinant les options d’utilisateur avec des défauts de profil |
merge_options(earlier, later) | Mélanger deux RenderOptions (Les valeurs ultérieures sont supérieuses) |
coerce_options(options) | Normaliser les options de base dans le RenderOptions |
Conseils et meilleures pratiques
- Utiliser des systèmes de soins (
code128(),qr(),et ainsi de suite) au lieu degenerate()pour la sécurité de type - ils veillent à ce que la classe d’options correcte est utilisée. - Le
Barcode.symbolLa propriété donne accès direct à laEncodedSymbolpour la rendue ou l’analyse. BarcodeServiceest sans état - une seule instance peut générer des codes bars sur plusieurs filets.- Catch
BarcodeErrorcomme une classe de base pour gérer toutes les exceptions liées au code bar dans un seul bloc.
Les problèmes communs
| Issue | Cause | Fixé |
|---|---|---|
SymbologyNotFoundError | Nom non inscrit dans SymbologyRegistry | Vérifier le débit; utiliser des noms canoniques |
InvalidInputError | Les données violent les exigences symbologiques | Vérifier les caractères et la longueur des exigences |
| Votre produit SVG vide | Pas de modules codés | Vérification des données n’est pas vide et valide pour la symbologie |