바코드 생성

바코드 생성

Aspose.BarCode FOSS에서 Python용 바코드 생성 파이프라인은 3단계 아키텍처를 따릅니다: 파싱 → 인코딩 → 렌더링. 고수준 API (generate() 및 per-symbology helpers) 은 이러한 단계들을 통해 조정합니다 BarcodeService.


고수준 생성 API

바코드를 생성하는 가장 간단한 방법은 per-symbology helper 함수들을 사용하는 것입니다:

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")

각 헬퍼는 Barcode 객체를 반환합니다. SVG 출력을 위해 to_svg()을 호출하거나 PNG 출력을 위해 to_png()을 호출하세요.

일반적인 generate() 함수는 symbology 이름 문자열을 받습니다:

bc = barcode.generate("code128", "DATA")
svg = bc.to_svg()

유효한 symbology 이름: "code128", "code39", "ean13", "ean8", "qr", "upca", "upce".


BarcodeService

BarcodeService는 세 파이프라인 단계들을 조정합니다. 그것은 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()를 호출합니다
  3. SymbologyEncoder.encode()를 호출하여 EncodedSymbol를 생성합니다
  4. 심볼과 그 프로파일을 감싸는 Barcode를 반환합니다

SymbologyRegistry

SymbologyRegistry는 정식 이름 및 별칭을 키로 하는 SymbologyDefinition 객체를 저장합니다:

메서드설명
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

SymbologyDefinition는 하나의 심볼로지를 지원하는 데 필요한 모든 구성 요소를 번들링합니다:

속성유형설명
namestr표준 기호 식별자
parserInputParser입력 데이터를 검증하고 정규화합니다
encoderSymbologyEncoder데이터를 모듈 매트릭스로 인코딩합니다
profileSymbologyProfile기본값, 기능 및 텍스트 정책
aliasestuple[str, ...]조회용 대체 이름

EncodedSymbol

인코더가 반환하는 EncodedSymbol에는 다음이 포함됩니다:

  • matrix — 바코드의 논리 모듈 그리드를 가진 ModuleMatrix
  • metadata — 심볼로지 이름, 표시 텍스트 및 인코딩 세부 정보를 가진 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은(는) 구문 분석과 인코딩 사이의 중간 표현입니다:

속성설명
symbology표준 기호 이름
data검증된 입력 데이터 (str 또는 bytes)
input_kind입력이 어떻게 분류되었는지
code128_encode_mode해결된 Code 128 모드 (해당되는 경우)
code39_encode_mode해결된 Code 39 모드 (해당되는 경우)
qr_error_correction_level해결된 QR 오류 정정 (해당되는 경우)
qr_version해결된 QR 버전 (해당되는 경우)
qr_encoding_mode해결된 QR 인코딩 모드 (해당되는 경우)

OptionsResolver

OptionsResolver은(는) 사용자 제공 렌더 옵션을 심볼로지 기본값과 병합합니다:

메서드설명
resolve(profile, options)사용자 옵션과 프로필 기본값을 병합하여 ResolvedRenderOptions를 생성합니다
merge_options(earlier, later)두 개의 RenderOptions를 병합합니다 (후자의 값이 우선합니다)
coerce_options(options)원시 옵션을 RenderOptions으로 정규화합니다

팁 및 모범 사례

  • 형식 안전성을 위해 generate() 대신 심볼로지별 헬퍼(code128(), qr() 등)를 사용하세요 — 올바른 옵션 클래스를 사용하도록 보장합니다.
  • Barcode.symbol 속성은 사용자 정의 렌더링 또는 분석을 위해 EncodedSymbol에 직접 접근할 수 있게 합니다.
  • BarcodeService은 무상태이며 — 하나의 인스턴스로 여러 스레드에서 바코드를 생성할 수 있습니다.
  • 모든 바코드 관련 예외를 하나의 블록에서 처리하기 위해 기본 클래스로 BarcodeError을 잡으세요.

일반적인 문제

이슈원인해결
SymbologyNotFoundErrorSymbologyRegistry에 등록되지 않은 이름철자를 확인하세요; 정식 이름을 사용하세요
InvalidInputError데이터가 기호 규칙을 위반합니다문자 집합 및 길이 요구 사항을 확인하세요
빈 SVG 출력모듈이 인코딩되지 않음데이터가 비어 있지 않고 심볼에 대해 유효한지 확인하십시오

참조

 한국어