การสร้างบาร์โค้ด
การสร้างบาร์โค้ด
การสร้างบาร์โค้ดใน Aspose.BarCode FOSS สําหรับ Python ตามสถาปัตยกรรม 3 ระดับ: การพาร์ส → การรหัส →การทําผลงาน.API ระดับสูง (generate() และผู้ช่วยทางสัญลักษณ์) จัดการขั้นตอนเหล่านี้ผ่าน BarcodeService.
API การสร้างระดับสูง
วิธีง่ายที่สุดในการสร้างบาร์โค้ดคือผ่านฟังก์ชันผู้ช่วยต่อสัญลักษณ์:
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")ผู้ช่วยแต่ละคนจะส่งกลับตัวเลขที่ 1 Barcode เปิดตัว โทรหา to_svg() สําหรับการออก SVG หรือ to_png() สําหรับการออก PNG.
ยาทั่วไป generate() การใช้งานรับรองรหัสชื่อสัญลักษณ์:
bc = barcode.generate("code128", "DATA")
svg = bc.to_svg()ชื่อสัญลักษณ์ที่ใช้ได้: "code128", "code39", "ean13", "ean8", "qr", "upca", "upce".
BarcodeService
BarcodeService มันมีการประสานงานระหว่าง 3 ขั้นตอนของท่อ SymbologyRegistry และ 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")การ generate() วิธีการ:
- ดูขึ้นไป
SymbologyDefinitionจากทะเบียน - เรียกว่า
InputParser.parse()การตรวจสอบและการปกติ化 input - เรียกว่า
SymbologyEncoder.encode()การผลิตEncodedSymbol - กลับ a
Barcodeการพับสัญลักษณ์และโปรไฟล์ของมัน
SymbologyRegistry
SymbologyRegistry ร้านค้า SymbologyDefinition อวัตถุที่ใช้ชื่อและนามฉายาประจําการ:
| Method | Description |
|---|---|
get_definition(name) | ค้นหานิยามสัญลักษณ์ที่สมบูรณ์ |
get_parser(name) | เอาไป InputParser สําหรับสัญลักษณ์ |
get_encoder(name) | เอาไป SymbologyEncoder สําหรับสัญลักษณ์ |
get_profile(name) | เอาไป SymbologyProfile โดยคํานวณอ่อน |
get_text_policy(name) | เอาไป TextLayoutPolicy สําหรับการแสดงข้อความ |
register(definition) | จดทะเบียนใหม่ SymbologyDefinition |
EncoderRegistry เป็นชื่อลักษณะที่เข้ากันกลับสําหรับ SymbologyRegistry.
SymbologyDefinition
A การทําการ SymbologyDefinition รวมองค์ประกอบทั้งหมดที่จําเป็นเพื่อสนับสนุนสัญลักษณ์หนึ่ง:
| Property | Type | Description |
|---|---|---|
name | str | ตัวรับประจําตัวอักษรตามกฎหมาย |
parser | InputParser | ยืนยันและประจําข้อมูลการเข้า |
encoder | SymbologyEncoder | การรหัสข้อมูลในเมทริกซ์โหมด |
profile | SymbologyProfile | การตั้งค่า, ความสามารถ และนโยบายข้อความ |
aliases | tuple[str, ...] | ชื่อทางเลือกสําหรับการค้นหา |
EncodedSymbol
การ EncodedSymbol ที่ส่งกลับโดยเครื่องโค้ด มี:
matrixaModuleMatrixด้วยตารางโมดูลโลจิกของบาร์โค้ดmetadataaSymbolMetadataด้วยชื่อสัญลักษณ์, ภาพแสดงข้อความ และรายละเอียดการโคด
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 ให้บริการที่ get(x, y) วิธีที่คืนค่าโหมดในตําแหน่งหนึ่ง.
NormalizedPayload
การ NormalizedPayload คือตัวแทนระหว่างการพาร์สและการโคด:
| Property | Description |
|---|---|
symbology | ชื่อสัญลักษณ์ตามกฎธรรมศาสตร์ |
data | ข้อมูลการเข้าที่ผ่านการตรวจสอบ (str หรือ bytes) |
input_kind | วิธีการจัดอันดับของ input |
code128_encode_mode | รูปแบบที่แก้ไขได้ (กรณีมี) |
code39_encode_mode | รูปแบบที่แก้ไขได้ (กรณีที่มี) |
qr_error_correction_level | การแก้ไขความผิดพลาด QR (ถ้ามี) |
qr_version | รุ่น QR ที่แก้ไข (ถ้ามี) |
qr_encoding_mode | รูปแบบการรหัส QR ที่แก้ไข (ถ้ามี) |
OptionsResolver
OptionsResolver ผสมตัวเลือกการทํา render ที่ผู้ใช้บริการให้กับแบบจํากัดของสัญลักษณ์:
| Method | Description |
|---|---|
resolve(profile, options) | สร้าง a ResolvedRenderOptions โดยการรวมตัวเลือกของผู้ใช้กับแบบพิมพ์โดยตั้งค่า |
merge_options(earlier, later) | การรวม 2 RenderOptions (ค่าหลังจะถูกยกเลิก) |
coerce_options(options) | การประมวลผลตัวเลือกสดเป็น RenderOptions |
เคล็ดลับและปฏิบัติที่ดีที่สุด
- ใช้ตัวช่วยต่อสัญลักษณ์ (
code128(),qr(),ฯลฯ) แทนการใช้งานของgenerate()สําหรับความปลอดภัยของแบบ พวกเขาจะรับประกันการใช้คลาสตัวเลือกที่ถูกต้อง. - การ
Barcode.symbolที่ดินให้บริการตรงไปยังEncodedSymbolสําหรับการทําแบบหรือวิเคราะห์ตามความต้องการของผู้ใช้งาน. BarcodeServiceเป็น stateless ตัวอย่างหนึ่งสามารถสร้าง barcode ทั่วหลายสาย.- Catch
BarcodeErrorเป็นคลาสฐานที่จะจัดการความพิเศษทั้งหมดที่เกี่ยวข้องกับบาร์โค้ดในตู้เดียว.
ปัญหาทั่วไป
| Issue | Cause | แก้ไข |
|---|---|---|
SymbologyNotFoundError | ชื่อไม่ลงทะเบียนใน SymbologyRegistry | ตรวจสอบการเขียน; ใช้ชื่อตามธรรมดา |
InvalidInputError | ข้อมูลที่ละเมิดความต้องการทางสัญลักษณ์ | ตรวจสอบความต้องการของเซ็ตตัวอักษรและความยาว |
| การออก SVG ที่ว่างเปล่า | ไม่มีโหมดที่โค้ด | ยืนยันข้อมูลไม่ว่างและมีค่าสําหรับสัญลักษณ์ |