バーコードレンダリング
バーコードレンダリング
Aspose.BarCode FOSS for Python はエンコードとレンダリングを分離します。バーコードが EncodedSymbol にエンコードされた後、Renderer 実装がモジュールマトリックスを視覚的出力に変換します。このライブラリには SvgRenderer と PngRenderer が含まれています。
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,
))| プロパティ | 型 | 説明 |
|---|---|---|
scale | float | バーコード全体の均一なスケール倍率 |
dpi | int | PNG 出力の解像度(SVG には影響しません) |
module_width | float | ユーザー単位での1つのバーコードモジュールの幅 |
module_height | float | ユーザー単位での1つのバーコードモジュールの高さ |
quiet_zone | float | バーコード周囲の空白パディング |
foreground_color | str | バーとモジュールの16進カラー(例:"#000000") |
background_color | str | 背景の16進カラー |
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 出力は解像度に依存しません — 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 |