トラブルシューティング Aspose.BarCode FOSS for Python

トラブルシューティング Aspose.BarCode FOSS for Python

このガイドでは、Aspose.BarCode FOSS for Python を使用してバーコードを生成する際に最も一般的なエラーと問題を取り上げます。各セクションでは、エラーの内容、その原因、そして対処方法を説明します。

一般的なエラー

InvalidInputError

InvalidInputError は、エンコーダに渡されたデータがシンボロジーの文字セットまたは長さの要件に合致しない場合に発生します。

****典型的な原因::

  • 数字専用シンボロジーにアルファベット文字を渡すこと (EAN-13, EAN-8, UPC-A, UPC-E)
  • シンボロジーの固定長要件と一致しない文字列を提供すること(例: EAN-13 は正確に12桁または13桁が必要)
  • シンボロジーがサポートする文字セット外の文字を含める (例: Code 39 のベースモードは大文字、数字、いくつかの特殊文字のみをサポートします)

修正: 呼び出す前に入力データを検証してください BarcodeService.generate(). シンボロジープロファイルの capabilities and known_limitations 文字セットと長さの制約に関するプロパティ。

from aspose_barcode_foss import BarcodeService

service = BarcodeService()

# EAN-13 requires exactly 12 or 13 digits
data = "590123412345"  # 12 digits — valid
barcode = service.generate("ean13", data)

EncodingError

EncodingError は、入力検証が通過した後にエンコーダが内部エラーに遭遇したときに発生します。これは InvalidInputError よりも発生頻度が低いです。

****典型的な原因::

  • 初期検証は通過するがセグメントエンコード中に失敗するデータ (例: 選択された誤り訂正レベルの容量を超える QR Code データ)
  • エンコードオプションの競合 (例: 小文字を含むデータで Code128EncodeMode.CODE_A を要求する場合)

修正: 渡されたエンコードオプションを確認してください generate(). Code 128 の場合は、使用してください Code128EncodeMode.AUTO エンコーダに最適なサブセットを選択させます。QR Code の場合は、より低いものを試してください QrErrorCorrectionLevel またはデータ長を削減します。

from aspose_barcode_foss import BarcodeService, Code128Options, Code128EncodeMode

service = BarcodeService()
options = Code128Options(encode_mode=Code128EncodeMode.AUTO)
barcode = service.generate("code128", "Hello123", encode=options)

SymbologyNotFoundError

SymbologyNotFoundError は、BarcodeService.generate() に渡されたシンボロジー名が SymbologyRegistry に登録されていない場合に発生します。

****典型的な原因::

  • スペルミスしたシンボロジー名(例:"code_128" の代わりに "code128")
  • ライブラリがサポートしていないシンボロジーを使用している(ライブラリは Code 128、Code 39、EAN-13、EAN-8、QR Code、UPC-A、および UPC-E のみをサポートしています)

修正: サポートされている7つのシンボロジー識別子のいずれかを使用してください: "code128", "code39", "ean13", "ean8", "qrcode", "upca", "upce". 名前は大文字小文字を区別しませんが、登録された識別子と一致する必要があります。

from aspose_barcode_foss import BarcodeService

service = BarcodeService()

# Correct symbology names
barcode = service.generate("code128", "ABC-123")
barcode = service.generate("qrcode", "https://example.com")

RenderingError

RenderingError は、レンダラーがエンコードされたシンボルから出力を生成できなかったときに発生します。

****典型的な原因::

  • 無効な RenderOptions 値(例: 負の scale または module_width)
  • PdfRenderer を使用しようとしています(現在のバージョンでは PDF レンダリングが NotImplementedError を発生させます)

修正: 使用 SvgRenderer or PngRenderer 代わりに PdfRenderer. 確認してください RenderOptions プロパティは有効な正の値です。

from aspose_barcode_foss import BarcodeService, RenderOptions
from aspose_barcode_foss.rendering import SvgRenderer

service = BarcodeService()
barcode = service.generate("ean13", "590123412345")

options = RenderOptions(scale=2.0, dpi=300)
result = barcode.render(SvgRenderer(), options)

UnsupportedCapabilityError と UnsupportedFeatureError

UnsupportedCapabilityError は、シンボロジーが要求された機能をサポートしていない場合に発生します(例: GS1 モードが GS1 のサポートがないシンボロジーの場合)。UnsupportedFeatureError は、ライブラリで実装されていない機能に対して発生します。

修正: シンボロジープロファイルの capabilities プロパティを確認して、利用可能な機能を特定してください。サポートされていないシンボロジーに対して GS1 モードを要求しないでください。

環境の問題

Python バージョン

Aspose.BarCode FOSS は Python 3.12 以降が必要です。SyntaxError やインポート失敗が表示された場合は、Python のバージョンを確認してください:

python --version

インストールの問題

パッケージをソースからビルドします。

このライブラリは純粋な Python で、ネイティブ依存関係はありません。インストールは成功したがインポートが失敗する場合、aspose_barcode_foss.py という名前のローカルファイルでパッケージが上書きされていないか確認してください。

インポートエラー

正しいインポートは次のとおりです:

import aspose_barcode_foss

または特定のクラスをインポート:

from aspose_barcode_foss import BarcodeService, RenderOptions

よくある質問

なぜ私のEAN-13バーコードは入力した番号と異なる番号を表示するのですか?

EAN-13はチェックデジットを自動的に計算します。12桁を渡すと13桁目が付加されます。13桁を渡すと、最後の桁がチェックデジットとして検証されます。Ean13Options allow_check_digit_input プロパティを使用してこの動作を制御します。

なぜPDF出力でNotImplementedErrorが発生するのですか?

PdfRenderer.render() と Barcode.to_pdf() はまだ実装されていません。代わりに Barcode.to_svg() または Barcode.to_png() を使用するか、SvgRenderer または PngRenderer で直接レンダリングしてください。

利用可能なシンボロジー名をデバッグするにはどうすればよいですか?

シンボロジーが登録されているか確認するには SymbologyRegistry.get_definition() を使用します。SymbologyNotFoundError が発生した場合、そのシンボロジーは利用できません。サポートされている7つのシンボロジーは、Code 128、Code 39、EAN-13、EAN-8、QR Code、UPC-A、および UPC-E です。

参照

 日本語