Lavorare con le Opzioni di Codifica
Lavorare con le Opzioni di Codifica
Ogni simbologia di codice a barre in Aspose.BarCode FOSS per Python dispone di una classe di opzioni dedicata che controlla il comportamento della codifica. Tutte le classi di opzioni ereditano da EncodeOptions, che fornisce le proprietà gs1_enabled e eci_assignment_number condivise tra le simbologie.
Code128Options
Code128Options controlla quali set di caratteri Code 128 l’encoder seleziona. La proprietà encode_mode accetta un valore enum Code128EncodeMode.
| Mode | Descrizione |
|---|---|
AUTO | Seleziona automaticamente la codifica più compatta |
CODE_A | Maiuscole, cifre e caratteri di controllo |
CODE_B | Maiuscole, minuscole e cifre |
CODE_C | Coppie di cifre — ottimizzate per dati solo numerici |
CODE_AB | Cambia tra Code A e Code B |
CODE_AC | Cambia tra Code A e Code C |
CODE_BC | Cambia tra Code B e Code C |
import aspose_barcode_foss as barcode
from aspose_barcode_foss import Code128Options, Code128EncodeMode
# AUTO mode — library picks the most compact encoding
bc_auto = barcode.code128("ABC123", encode=Code128Options(encode_mode=Code128EncodeMode.AUTO))
# CODE_C mode — compact encoding for digit-only data
bc_c = barcode.code128("9876543210", encode=Code128Options(encode_mode=Code128EncodeMode.CODE_C))
# CODE_B mode — full alphanumeric support
bc_b = barcode.code128("Hello World", encode=Code128Options(encode_mode=Code128EncodeMode.CODE_B))Code39Options
Code39Options controlla se l’encoder utilizza il set di caratteri base da 43 o l’estensione Full ASCII.
| Proprietà | Tipo | Default | Descrizione |
|---|---|---|---|
full_ascii | bool | None | Abilita la modalità Full ASCII (intervallo di 128 caratteri tramite coppie di shift) |
add_check_digit | bool | None | Aggiungi una cifra di controllo modulo-43 |
from aspose_barcode_foss import Code39Options
# Base mode — uppercase letters, digits, and a few special characters
bc_base = barcode.code39("CODE 39")
# Full ASCII mode — encodes the full 128-character ASCII range
bc_full = barcode.code39(
"Hello, World!",
encode=Code39Options(full_ascii=True, add_check_digit=True),
)QrOptions
QrOptions ha la superficie di configurazione più ampia tra tutte le simbologie.
| Proprietà | Tipo | Values |
|---|---|---|
error_correction_level | QrErrorCorrectionLevel | L (7%), M (15%), Q (25%), H (30%) |
encoding_mode | QrEncodeMode | AUTO, NUMERIC, ALPHANUMERIC, BYTE, KANJI |
version | int | 1–40 (controlla le dimensioni del simbolo) |
mask | int | 0–7 (selezione manuale del modello di maschera) |
from aspose_barcode_foss import QrOptions, QrErrorCorrectionLevel, QrEncodeMode
# High error correction with byte encoding
bc = barcode.qr(
"https://example.com",
encode=QrOptions(
error_correction_level=QrErrorCorrectionLevel.H,
encoding_mode=QrEncodeMode.BYTE,
),
)
# Numeric mode for digit-only data — most compact QR
bc_num = barcode.qr(
"0123456789",
encode=QrOptions(encoding_mode=QrEncodeMode.NUMERIC),
)
# Explicit version and mask
bc_v5 = barcode.qr(
"TEST",
encode=QrOptions(version=5, mask=3),
)Ean13Options
Ean13Options controlla la gestione della cifra di controllo per i codici a barre EAN-13.
| Proprietà | Tipo | Default | Descrizione |
|---|---|---|---|
allow_check_digit_input | bool | None | Accetta un input a 13 cifre con cifra di controllo pre-calcolata |
from aspose_barcode_foss import Ean13Options
# 12 digits — library computes the 13th check digit
bc = barcode.ean13("590123412345")
# 13 digits — library validates the provided check digit
bc2 = barcode.ean13(
"5901234123457",
encode=Ean13Options(allow_check_digit_input=True),
)Ean8Options
Ean8Options funziona identicamente a Ean13Options ma per i codici a barre EAN a 8 cifre. Fornire 7 cifre di payload (la libreria calcola l'8ª), oppure impostare allow_check_digit_input=True per un input a 8 cifre.
from aspose_barcode_foss import Ean8Options
bc = barcode.ean8("1234567")
bc2 = barcode.ean8("12345670", encode=Ean8Options(allow_check_digit_input=True))UpcaOptions e UpceOptions
UpcaOptions e UpceOptions seguono lo stesso modello allow_check_digit_input delle opzioni EAN. UpceOptions ha anche una proprietà number_system.
from aspose_barcode_foss import UpcaOptions, UpceOptions
# UPC-A: 11 digits, library adds check digit
bc_a = barcode.upca("01234567890")
# UPC-E with pre-computed check digit
bc_e = barcode.upce(
"01234565",
encode=UpceOptions(allow_check_digit_input=True),
)EncodeOptions Proprietà di base
Tutte le classi di opzioni ereditano queste proprietà da EncodeOptions:
| Proprietà | Tipo | Descrizione |
|---|---|---|
gs1_enabled | `bool | None` |
eci_assignment_number | `int | None` |
Suggerimenti e migliori pratiche
- Utilizza
Code128EncodeMode.AUTOa meno che tu non abbia una ragione specifica per limitare i set di caratteri — genera il codice a barre più corto per qualsiasi input. - Imposta
QrErrorCorrectionLevel.Hper i codici QR che saranno stampati su superfici soggette a danni. - Consenti alla libreria di calcolare le cifre di controllo per impostazione predefinita — imposta
allow_check_digit_input=Truesolo quando ricevi dati prevalidati da un altro sistema. - Utilizza
QrEncodeMode.NUMERICper dati QR composti solo da cifre per ridurre al minimo le dimensioni del simbolo.
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
InvalidInputError su Code 39 | L’input contiene lettere minuscole | Imposta full_ascii=True in Code39Options |
| QR code troppo grande | Versione impostata troppo bassa per la lunghezza dei dati | Rimuovi version esplicito o aumentalo |
| Cifra di controllo errata su EAN-13 | Input a 13 cifre senza allow_check_digit_input=True | Fornisci 12 cifre (auto) o imposta l’opzione su True |
SymbologyNotFoundError | Nome della simbologia errato in generate() | Usa uno di: code128, code39, ean13, ean8, qr, upca, upce |