Praca z opcjami kodowania
Praca z opcjami kodowania
Każda symbologia kodu kreskowego w Aspose.BarCode FOSS dla Python ma dedykowaną klasę opcji, która kontroluje zachowanie kodowania. Wszystkie klasy opcji dziedziczą po EncodeOptions, które zapewniają właściwości gs1_enabled i eci_assignment_number wspólne dla symbologii.
Code128Options
Code128Options kontroluje, które zestawy znaków Code 128 wybiera enkoder. Właściwość encode_mode przyjmuje wartość wyliczeniową Code128EncodeMode.
| Mode | Opis |
|---|---|
AUTO | Automatycznie wybiera najkompaktowsze kodowanie |
CODE_A | Duże litery, cyfry i znaki kontrolne |
CODE_B | Duże litery, małe litery i cyfry |
CODE_C | Pary cyfr — zoptymalizowane dla danych wyłącznie numerycznych |
CODE_AB | Przełącza pomiędzy Kodem A i Kodem B |
CODE_AC | Przełącza pomiędzy Kodem A i Kodem C |
CODE_BC | Przełącza pomiędzy Kodem B i Kodem 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 kontroluje, czy enkoder używa podstawowego zestawu 43 znaków, czy pełnego rozszerzenia ASCII.
| Właściwość | Typ | Default | Opis |
|---|---|---|---|
full_ascii | bool | None | Włącz tryb pełnego ASCII (zakres 128 znaków przy użyciu par shift) |
add_check_digit | bool | None | Dodaj cyfrę kontrolną 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 ma najobszerniejszą powierzchnię konfiguracyjną spośród wszystkich symbologii.
| Właściwość | Typ | 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 (kontroluje wymiary symbolu) |
mask | int | 0–7 (ręczny wybór wzoru maski) |
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 kontroluje obsługę cyfry kontrolnej dla kodów kreskowych EAN-13.
| Właściwość | Typ | Default | Opis |
|---|---|---|---|
allow_check_digit_input | bool | None | Akceptuj 13-cyfrowe dane wejściowe z wstępnie obliczoną cyfrą kontrolną |
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 działa identycznie jak Ean13Options, ale dla 8-cyfrowych kodów EAN. Dostarcz 7 cyfr danych (biblioteka oblicza 8-tą), lub ustaw allow_check_digit_input=True dla 8-cyfrowego wejścia.
from aspose_barcode_foss import Ean8Options
bc = barcode.ean8("1234567")
bc2 = barcode.ean8("12345670", encode=Ean8Options(allow_check_digit_input=True))UpcaOptions i UpceOptions
UpcaOptions i UpceOptions podążają za tym samym wzorcem allow_check_digit_input co opcje EAN. UpceOptions ma także własność 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 Podstawowe właściwości
Wszystkie klasy opcji dziedziczą te właściwości z EncodeOptions:
| Właściwość | Typ | Opis |
|---|---|---|
gs1_enabled | `bool | None` |
eci_assignment_number | `int | None` |
Wskazówki i najlepsze praktyki
- Użyj
Code128EncodeMode.AUTO, chyba że masz konkretny powód, aby ograniczyć zestawy znaków — zapewnia najkrótszy kod kreskowy dla dowolnych danych wejściowych. - Ustaw
QrErrorCorrectionLevel.Hdla kodów QR, które będą drukowane na powierzchniach podatnych na uszkodzenia. - Pozwól bibliotece domyślnie obliczać cyfry kontrolne — ustaw
allow_check_digit_input=Truetylko wtedy, gdy otrzymujesz wstępnie zweryfikowane dane z innego systemu. - Użyj
QrEncodeMode.NUMERICdla danych QR zawierających wyłącznie cyfry, aby zmniejszyć rozmiar symbolu.
Typowe problemy
| Problem | Przyczyna | Naprawa |
|---|---|---|
InvalidInputError na Code 39 | Wejście zawiera małe litery | Ustaw full_ascii=True w Code39Options |
| QR code za duży | Ustawiona wersja jest zbyt niska dla długości danych | Usuń jawny version lub zwiększ go |
| Nieprawidłowa cyfra kontrolna w EAN-13 | Wejście 13-cyfrowe bez allow_check_digit_input=True | Podaj 12 cyfr (auto) lub ustaw opcję na True |
SymbologyNotFoundError | Błędnie napisana nazwa symboliki w generate() | Użyj jednego z: code128, code39, ean13, ean8, qr, upca, upce |