바코드 렌더링

바코드 렌더링

바코드 렌더링

Aspose.BarCode Python용 FOSS는 인코딩과 렌더링을 분리합니다. 바코드가 EncodedSymbol로 인코딩된 후, Renderer 구현이 모듈 매트릭스를 시각 출력으로 변환합니다. 이 라이브러리에는 SvgRenderer와 PngRenderer가 포함되어 있습니다.


RenderOptions

RenderOptions은 모든 렌더러의 시각 출력을 제어합니다. 이를 to_svg() 또는 to_png()에 전달하여 any Barcode 객체에 사용하세요:

import aspose_barcode_foss as barcode
from aspose_barcode_foss import RenderOptions

bc = barcode.code128("Hello World")
svg = bc.to_svg(options=RenderOptions(
    scale=2.0,
    foreground_color="#003366",
    quiet_zone=10.0,
    show_text=True,
))
속성유형설명
scalefloat전체 바코드에 대한 균일 스케일 배율
dpiintPNG 출력 해상도 (SVG에는 영향을 주지 않음)
module_widthfloat사용자 단위에서 하나의 바코드 모듈 너비
module_heightfloat사용자 단위에서 하나의 바코드 모듈 높이
quiet_zonefloat바코드 주변의 공백 패딩
foreground_colorstr막대와 모듈의 Hex 색상 (예: "#000000")
background_colorstr배경의 Hex 색상
transparent_backgroundboolPNG 출력용 투명 배경
show_textbool바코드 아래에 사람이 읽을 수 있는 텍스트 표시
font_familystr사람이 읽을 수 있는 텍스트용 폰트
font_sizefloat인간이 읽을 수 있는 텍스트의 글꼴 크기

ResolvedRenderOptions

ResolvedRenderOptions은 OptionsResolver.resolve()에 의해 생성된 완전 병합된 구성입니다. 이는 사용자 제공 RenderOptions와 SymbologyProfile 기본값을 결합합니다. 모든 속성은 구체적인 값이 존재합니다( None 없음).

Barcode.default_render_options 속성은 생성 시 전달된 RenderOptions을 보관합니다(제공되지 않은 경우 None).


SVG 출력

SvgRenderer은(는) SVG 출력을 생성합니다. Barcode 객체에서 to_svg()을(를) 호출하십시오:

bc = barcode.ean13("590123412345")
svg_string = bc.to_svg()

# With custom options
svg_custom = bc.to_svg(options=RenderOptions(
    scale=3.0,
    foreground_color="#1a1a1a",
    show_text=True,
    font_family="Helvetica",
    font_size=12.0,
))

with open("ean13.svg", "w") as f:
    f.write(svg_custom)

to_svg()은(는) 전체 SVG 문서를 포함하는 str을(를) 반환합니다.


PNG 출력

PngRenderer은(는) PNG 출력을 생성합니다. Barcode 객체에서 to_png()을(를) 호출하십시오:

bc = barcode.qr("https://example.com")
png_bytes = bc.to_png()

# With custom options
png_custom = bc.to_png(options=RenderOptions(
    scale=4.0,
    dpi=300,
    transparent_background=True,
))

with open("qr.png", "wb") as f:
    f.write(png_custom)

to_png()은(는) PNG 이미지 데이터를 포함하는 bytes을(를) 반환합니다.


렌더러 추상화

추상 기본 클래스 Renderer은(는) 모든 렌더러에 대한 인터페이스를 정의합니다:

class Renderer(ABC):
    def render(self, symbol, layout, options) -> RenderedArtifact: ...

SvgRenderer와 PngRenderer은 모두 이 인터페이스를 구현합니다. 특정 렌더러를 직접 사용하려면 Barcode.render(renderer, options)를 호출할 수 있습니다:

from aspose_barcode_foss import SvgRenderer, RenderOptions

bc = barcode.code128("DATA")
artifact = bc.render(SvgRenderer(), RenderOptions(scale=2.0))
print(artifact.media_type)  # "image/svg+xml"
print(type(artifact.data))  # <class 'str'>

RenderedArtifact

Renderer.render()이 반환하는 RenderedArtifact에는 다음이 포함됩니다:

속성유형설명
data`strbytes`
media_typestrMIME 유형 ("image/svg+xml" 또는 "image/png")
backendstr렌더러 식별자

텍스트 레이아웃

각 심볼로지는 바코드 아래에 인간이 읽을 수 있는 텍스트가 배치되는 방식을 결정하는 TextLayoutPolicy을(를) 가지고 있습니다. create_layout(symbol, options) 메서드는 위치와 텍스트 데이터가 포함된 TextSegment 객체들을 담은 TextLayout를 반환합니다.

QR Code은 QrTextLayoutPolicy을 사용하며, 이는 아무 동작도 하지 않는 레이아웃을 제공합니다 (QR 코드는 인간이 읽을 수 있는 텍스트를 표시하지 않습니다).


팁 및 모범 사례

  • 균일한 크기 조정을 위해 scale을 사용하고, 정밀한 치수 제어를 위해 module_width/module_height를 사용하세요 — 두 가지를 동시에 사용하지 마세요.
  • 인쇄 품질 PNG 출력을 위해 dpi=300을(를) 설정하십시오; 기본값은 화면 해상도입니다.
  • 컬러 배경 위에 오버레이될 PNG 바코드에는 transparent_background=True을(를) 사용하십시오.
  • foreground_color와 background_color은(는) 표준 16진수 색상 문자열("#RRGGBB")을(를) 허용합니다.
  • SVG 출력은 해상도에 독립적입니다 — 웹 및 PDF 삽입을 위해 SVG를 선호하십시오.

일반적인 문제

문제원인수정
PNG가 너무 작게 표시됩니다기본 배율은 1.0입니다scale을 늘리거나 dpi을 설정하십시오
텍스트가 보이지 않음show_text 기본값은 False설정 show_text=True
QR code에 텍스트가 없습니다QR 심볼은 사람이 읽을 수 있는 텍스트를 지원하지 않습니다예상 동작 — QR는 no-op 텍스트 레이아웃을 사용합니다
색상이 적용되지 않음속성 이름에 오타가 있습니다정확한 속성 이름을 사용하세요: foreground_color, background_color

참조

 한국어