바코드 렌더링
바코드 렌더링
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,
))| 속성 | 유형 | 설명 |
|---|---|---|
scale | float | 전체 바코드에 대한 균일 스케일 배율 |
dpi | int | PNG 출력 해상도 (SVG에는 영향을 주지 않음) |
module_width | float | 사용자 단위에서 하나의 바코드 모듈 너비 |
module_height | float | 사용자 단위에서 하나의 바코드 모듈 높이 |
quiet_zone | float | 바코드 주변의 공백 패딩 |
foreground_color | str | 막대와 모듈의 Hex 색상 (예: "#000000") |
background_color | str | 배경의 Hex 색상 |
transparent_background | bool | PNG 출력용 투명 배경 |
show_text | bool | 바코드 아래에 사람이 읽을 수 있는 텍스트 표시 |
font_family | str | 사람이 읽을 수 있는 텍스트용 폰트 |
font_size | float | 인간이 읽을 수 있는 텍스트의 글꼴 크기 |
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 | `str | bytes` |
media_type | str | MIME 유형 ("image/svg+xml" 또는 "image/png") |
backend | str | 렌더러 식별자 |
텍스트 레이아웃
각 심볼로지는 바코드 아래에 인간이 읽을 수 있는 텍스트가 배치되는 방식을 결정하는 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 |