Generația codurilor de bare
Generația codurilor de bare
Pipeline-ul de generare a codurilor de bare în Aspose.BarCode FOSS pentru Python urmează o arhitectură cu trei etape: parsa → codarea → redarea.API de nivel înalt (generate() şi per-simbologie ajutoare) orchestrează aceste etape prin intermediul BarcodeService.
API de generare la nivel înalt
Cel mai simplu mod de a genera un cod de bare este prin funcțiile auxiliare per-simbologie:
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")Fiecare ajutator returnează un Barcode Obiectează. to_svg() pentru ieșirea SVG sau to_png() pentru ieșirea PNG.
Medicamentul generic generate() funcția acceptă un șir de nume simbolic:
bc = barcode.generate("code128", "DATA")
svg = bc.to_svg()Numele de simbolologie valabile: "code128", "code39", "ean13", "ean8", "qr", "upca", "upce".
BarcodeService
BarcodeService Coordonă cele trei etape ale conductei. SymbologyRegistry și o 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")În ceea ce priveşte generate() metoda:
- Se uită la…
SymbologyDefinitiondin registrul de înregistrare - Se cheamă …
InputParser.parse()validarea și normalizarea inputului; - Se cheamă …
SymbologyEncoder.encode()pentru a produce unEncodedSymbol - Retoară o
Barcodeînfășurarea simbolului și a profilului acestuia;
SymbologyRegistry
SymbologyRegistry magazinele SymbologyDefinition Obiecte cu cod de identificare prin nume canonice și aliasuri:
| Method | Description |
|---|---|
get_definition(name) | Obține o definiție completă a simbolologiei. |
get_parser(name) | Ia-l. InputParser pentru o simbolologie |
get_encoder(name) | Ia-l. SymbologyEncoder pentru o simbolologie |
get_profile(name) | Ia-l. SymbologyProfile cu standarduri |
get_text_policy(name) | Ia-l. TextLayoutPolicy pentru redarea textului |
register(definition) | Înregistraţi un nou SymbologyDefinition |
EncoderRegistry este un alias compatibil cu versiunea anterioară pentru: SymbologyRegistry.
SymbologyDefinition
A. În cazul în care: SymbologyDefinition se regăsește toate componentele necesare pentru a susține o singură simbolologie:
| Property | Type | Description |
|---|---|---|
name | str | Identificator de simbolologie canonică |
parser | InputParser | Validează și normalizează datele de intrare |
encoder | SymbologyEncoder | Codifică datele într-o matrice de module. |
profile | SymbologyProfile | Default, capacități și politică de text |
aliases | tuple[str, ...] | Numele alternative pentru căutare |
EncodedSymbol
În ceea ce priveşte EncodedSymbol returnate de un codificator conține:
matrixaModuleMatrixcu rețeaua modulului logic a codului de bare;metadataaSymbolMetadatacu denumirea simbolologiei, textul de afișare și detaliile codificării.
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 oferă o get(x, y) metodă care returnează valoarea modulului la o poziție dată.
NormalizedPayload
În ceea ce priveşte NormalizedPayload este reprezentarea intermediară între parcare și codificare:
| Property | Description |
|---|---|
symbology | Numele simbolului canonic |
data | Datele de intrare validate (str sau de: bytes) |
input_kind | Cum a fost clasificat inputul |
code128_encode_mode | Modul de cod 128 rezolvat (dacă este cazul) |
code39_encode_mode | Modul de cod 39 rezolvat (dacă este cazul) |
qr_error_correction_level | Corectarea erorii QR rezolvată (dacă este cazul) |
qr_version | Versiunea QR rezolvată (dacă este cazul) |
qr_encoding_mode | Mod de codificare QR rezolvat (dacă este cazul) |
OptionsResolver
OptionsResolver combină opțiunile de render furnizate de utilizator cu caracteristicile implicite ale simbologiei:
| Method | Description |
|---|---|
resolve(profile, options) | Produce un ResolvedRenderOptions prin fuziunea opțiunilor de utilizator cu parametrii implicit ai profilului. |
merge_options(earlier, later) | Fusionul doi. RenderOptions (valorile ulterioare sunt suprasolicitate) |
coerce_options(options) | Normalizarea opţiunilor brute în: RenderOptions |
Sfaturi şi cele mai bune practici
- Utilizați ajutoare per-simbologie (
code128(),qr(), etc.) în loc de:generate()pentru siguranța tipului se asigură că este utilizată clasa de opțiuni corectă. - În ceea ce priveşte
Barcode.symbolproprietate oferă acces direct laEncodedSymbolpentru procesarea sau analiza personalizată. BarcodeServiceeste stateless o instanță poate genera coduri de bare pe mai multe fire.- Catch
BarcodeErrorca clasă de bază pentru a gestiona toate excepțiile legate de codurile de bare într-un singur bloc.
Probleme comune
| Issue | Cause | Fixare |
|---|---|---|
SymbologyNotFoundError | Numele nu este înregistrat la: SymbologyRegistry | Verificați ortografia; utilizați nume canonice |
InvalidInputError | Datele încalcă cerințele de simbolologie | Verificați setul de caractere și cerințele de lungime |
| ieșire SVG goală | Nu sunt codificate module. | Verificați dacă datele nu sunt goale și valabile pentru simbolologie. |