Generasi Barcode
Generasi Barcode
Pipeline generasi barcode di Aspose.BarCode FOSS untuk Python mengikuti arsitektur tiga tahap: parse → encode → render.API tingkat tinggi (generate() dan per-simbolik pembantu) orkestrasi tahap ini melalui BarcodeService.
API Generasi Tingkat Tinggi
Cara paling sederhana untuk menghasilkan barcode adalah melalui fungsi pembantu per-symbology:
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")Setiap pembantu mengembalikan sebuah Barcode obyek. panggilan to_svg() untuk output SVG, atau to_png() untuk output PNG.
Generik generate() fungsi menerima string nama simbologi:
bc = barcode.generate("code128", "DATA")
svg = bc.to_svg()Nama simbologi yang valid: "code128", "code39", "ean13", "ean8", "qr", "upca", "upce".
BarcodeService
BarcodeService mengkoordinasikan tiga tahap pipa. SymbologyRegistry dan sebuah 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")Pengelolaan generate() metode:
- Mencari ke atas
SymbologyDefinitiondari registry - Panggillah…
InputParser.parse()untuk memvalidasi dan menormalkan input - Panggillah…
SymbologyEncoder.encode()untuk menghasilkan sebuahEncodedSymbol - Mengembalikan a
Barcodemembungkus simbol dan profilnya
SymbologyRegistry
SymbologyRegistry toko-toko SymbologyDefinition objek yang diketikkan dengan nama kanonik dan alias:
| Method | Description |
|---|---|
get_definition(name) | Memperoleh definisi simbologi lengkap |
get_parser(name) | Ambillah… InputParser untuk simbolologi |
get_encoder(name) | Ambillah… SymbologyEncoder untuk simbolologi |
get_profile(name) | Ambillah… SymbologyProfile dengan default |
get_text_policy(name) | Ambillah… TextLayoutPolicy untuk render teks |
register(definition) | Mendaftarkan yang baru. SymbologyDefinition |
EncoderRegistry adalah alias yang kompatibel ke belakang untuk SymbologyRegistry.
SymbologyDefinition
A. Tidak ada SymbologyDefinition mengelompokkan semua komponen yang diperlukan untuk mendukung satu simbolologi:
| Property | Type | Description |
|---|---|---|
name | str | Identifikasi simbologi kanonik |
parser | InputParser | Memvalidasi dan menormalkan data input |
encoder | SymbologyEncoder | Mengenkode data ke dalam matriks modul |
profile | SymbologyProfile | Standar, kemampuan dan kebijakan teks |
aliases | tuple[str, ...] | Nama alternatif untuk pencarian |
EncodedSymbol
Pengelolaan EncodedSymbol yang dikembalikan oleh encoder berisi:
matrixaModuleMatrixdengan grid modul logis kode bar,metadataaSymbolMetadatadengan nama simbologi, teks tampilan dan rincian pengkodean
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 memberikan sebuah get(x, y) metode yang mengembalikan nilai modul pada posisi tertentu.
NormalizedPayload
Pengelolaan NormalizedPayload adalah representasi perantara antara parsing dan pengkodean:
| Property | Description |
|---|---|
symbology | Nama simbologi kanonik |
data | Data input yang divalidasi (str atau: bytes) |
input_kind | Bagaimana input diklasifikasikan |
code128_encode_mode | Mode kode 128 yang telah dipecahkan (jika berlaku) |
code39_encode_mode | Mode Kode 39 yang Terpecahkan (jika berlaku) |
qr_error_correction_level | Koreksi kesalahan QR yang telah diselesaikan (jika berlaku) |
qr_version | Versi QR yang terpecahkan (jika berlaku) |
qr_encoding_mode | Mode pengkodean QR yang terjawab (jika berlaku) |
OptionsResolver
OptionsResolver menggabungkan opsi render yang disediakan pengguna dengan standar simbologi:
| Method | Description |
|---|---|
resolve(profile, options) | Menghasilkan a ResolvedRenderOptions dengan menggabungkan opsi pengguna dengan default profil |
merge_options(earlier, later) | Gabungan dua RenderOptions (nilai yang lebih lanjut di-override) |
coerce_options(options) | Menormalkan opsi mentah menjadi RenderOptions |
Tips dan Praktik Terbaik
- Gunakan per-simbologi pembantu (
code128(),qr(), dll) sebagai penggantigenerate()untuk keamanan tipe mereka memastikan bahwa kelas opsi yang benar digunakan. - Pengelolaan
Barcode.symbolproperti memberikan akses langsung keEncodedSymboluntuk render atau analisis khusus. BarcodeServiceadalah stateless satu instance dapat menghasilkan barcode di beberapa thread.- Catch
BarcodeErrorsebagai kelas dasar untuk menangani semua pengecualian yang terkait dengan kode bar dalam satu blok.
Masalah Umum
| Issue | Cause | Perbaiki |
|---|---|---|
SymbologyNotFoundError | Nama tidak terdaftar di: SymbologyRegistry | Periksa ejaan; gunakan nama kanonik |
InvalidInputError | Data melanggar persyaratan simbologi | Periksa persyaratan set karakter dan panjang |
| Keluar SVG kosong | Tidak ada modul yang dikodekan. | Verifikasi data tidak kosong dan valid untuk simbologi |