바코드 생성
바코드 생성
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() 메서드:
- 레지스트리에서
SymbologyDefinition를 조회합니다 - 입력을 검증하고 정규화하기 위해
InputParser.parse()를 호출합니다 SymbologyEncoder.encode()를 호출하여EncodedSymbol를 생성합니다- 심볼과 그 프로파일을 감싸는
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는 하나의 심볼로지를 지원하는 데 필요한 모든 구성 요소를 번들링합니다:
| 속성 | 유형 | 설명 |
|---|---|---|
name | str | 표준 기호 식별자 |
parser | InputParser | 입력 데이터를 검증하고 정규화합니다 |
encoder | SymbologyEncoder | 데이터를 모듈 매트릭스로 인코딩합니다 |
profile | SymbologyProfile | 기본값, 기능 및 텍스트 정책 |
aliases | tuple[str, ...] | 조회용 대체 이름 |
EncodedSymbol
인코더가 반환하는 EncodedSymbol에는 다음이 포함됩니다:
matrix— 바코드의 논리 모듈 그리드를 가진ModuleMatrixmetadata— 심볼로지 이름, 표시 텍스트 및 인코딩 세부 정보를 가진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을 잡으세요.
일반적인 문제
| 이슈 | 원인 | 해결 |
|---|---|---|
SymbologyNotFoundError | SymbologyRegistry에 등록되지 않은 이름 | 철자를 확인하세요; 정식 이름을 사용하세요 |
InvalidInputError | 데이터가 기호 규칙을 위반합니다 | 문자 집합 및 길이 요구 사항을 확인하세요 |
| 빈 SVG 출력 | 모듈이 인코딩되지 않음 | 데이터가 비어 있지 않고 심볼에 대해 유효한지 확인하십시오 |