การสร้างบาร์โค้ด

การสร้างบาร์โค้ด

การสร้างบาร์โค้ดใน 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() วิธีการ:

  1. ดูขึ้นไป SymbologyDefinition จากทะเบียน
  2. เรียกว่า InputParser.parse() การตรวจสอบและการปกติ化 input
  3. เรียกว่า SymbologyEncoder.encode() การผลิต EncodedSymbol
  4. กลับ a Barcode การพับสัญลักษณ์และโปรไฟล์ของมัน

SymbologyRegistry

SymbologyRegistry ร้านค้า SymbologyDefinition อวัตถุที่ใช้ชื่อและนามฉายาประจําการ:

MethodDescription
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 รวมองค์ประกอบทั้งหมดที่จําเป็นเพื่อสนับสนุนสัญลักษณ์หนึ่ง:

PropertyTypeDescription
namestrตัวรับประจําตัวอักษรตามกฎหมาย
parserInputParserยืนยันและประจําข้อมูลการเข้า
encoderSymbologyEncoderการรหัสข้อมูลในเมทริกซ์โหมด
profileSymbologyProfileการตั้งค่า, ความสามารถ และนโยบายข้อความ
aliasestuple[str, ...]ชื่อทางเลือกสําหรับการค้นหา

EncodedSymbol

การ EncodedSymbol ที่ส่งกลับโดยเครื่องโค้ด มี:

  • matrix a ModuleMatrix ด้วยตารางโมดูลโลจิกของบาร์โค้ด
  • metadata a SymbolMetadata ด้วยชื่อสัญลักษณ์, ภาพแสดงข้อความ และรายละเอียดการโคด
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 คือตัวแทนระหว่างการพาร์สและการโคด:

PropertyDescription
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 ที่ผู้ใช้บริการให้กับแบบจํากัดของสัญลักษณ์:

MethodDescription
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 เป็นคลาสฐานที่จะจัดการความพิเศษทั้งหมดที่เกี่ยวข้องกับบาร์โค้ดในตู้เดียว.

ปัญหาทั่วไป

IssueCauseแก้ไข
SymbologyNotFoundErrorชื่อไม่ลงทะเบียนใน SymbologyRegistryตรวจสอบการเขียน; ใช้ชื่อตามธรรมดา
InvalidInputErrorข้อมูลที่ละเมิดความต้องการทางสัญลักษณ์ตรวจสอบความต้องการของเซ็ตตัวอักษรและความยาว
การออก SVG ที่ว่างเปล่าไม่มีโหมดที่โค้ดยืนยันข้อมูลไม่ว่างและมีค่าสําหรับสัญลักษณ์

See Also

 ภาษาไทย