バーコードレンダリング

バーコードレンダリング

バーコードレンダリング

Aspose.BarCode FOSS for Python はエンコードとレンダリングを分離します。バーコードが EncodedSymbol にエンコードされた後、Renderer 実装がモジュールマトリックスを視覚的出力に変換します。このライブラリには SvgRendererPngRenderer が含まれています。


RenderOptions

RenderOptions はすべてのレンダラの視覚出力を制御します。任意の Barcode オブジェクトの to_svg() または to_png() に渡してください:

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ユーザー単位での1つのバーコードモジュールの幅
module_heightfloatユーザー単位での1つのバーコードモジュールの高さ
quiet_zonefloatバーコード周囲の空白パディング
foreground_colorstrバーとモジュールの16進カラー(例:"#000000"
background_colorstr背景の16進カラー
transparent_backgroundboolPNG出力用の透明背景
show_textboolバーコードの下に人が読めるテキストを表示する
font_familystr人が読めるテキストのフォント
font_sizefloat人間が読みやすいテキストのフォントサイズ

ResolvedRenderOptions

ResolvedRenderOptionsOptionsResolver.resolve() によって生成された完全にマージされた設定です。ユーザー提供の RenderOptionsSymbologyProfile のデフォルトを組み合わせます。すべてのプロパティは具体的な値を持ちます(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: ...

SvgRendererPngRenderer はどちらもこのインターフェースを実装しています。特定のレンダラーを直接使用するには、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_colorbackground_color は標準の16進カラー文字列("#RRGGBB")を受け付けます。
  • SVG 出力は解像度に依存しません — Web や PDF 埋め込みには SVG を優先してください。

よくある問題

問題原因修正
PNG が小さく見えるデフォルトのスケールは 1.0 ですscale を増やすか、dpi を設定してください
テキストが表示されませんshow_text はデフォルトで False です設定 show_text=True
QR code にはテキストがありませんQR symbology は人が読めるテキストをサポートしていません期待される動作 — QR は no-op テキストレイアウトを使用します
色が適用されていませんプロパティ名の綴りが間違っています正確なプロパティ名を使用してください: foreground_color, background_color

参照

 日本語