Rozwiązywanie problemów Aspose.BarCode FOSS for Python

Rozwiązywanie problemów Aspose.BarCode FOSS for Python

Ten przewodnik opisuje najczęstsze błędy i problemy podczas generowania kodów kreskowych przy użyciu Aspose.BarCode FOSS dla Python. Każda sekcja opisuje błąd, jego przyczynę i sposób jego naprawy.

Typowe błędy

InvalidInputError

InvalidInputError jest podnoszone, gdy dane przekazane do enkodera nie spełniają wymagań zestawu znaków lub długości symbologii.

****Typowe przyczyny::

  • Przekazywanie znaków alfabetu do symbologii tylko numerycznej (EAN-13, EAN-8, UPC-A, UPC-E)
  • Podanie ciągu, którego długość nie odpowiada wymogowi stałej długości symbologii (np. EAN-13 wymaga dokładnie 12 lub 13 cyfr)
  • Uwzględnianie znaków spoza obsługiwanego zestawu symboliki (np. tryb bazowy Code 39 obsługuje tylko wielkie litery, cyfry i kilka znaków specjalnych)

Napraw: Sprawdź poprawność danych wejściowych przed wywołaniem BarcodeService.generate(). Sprawdź profil symboliki capabilities and known_limitations właściwości dotyczące zestawu znaków i ograniczeń długości.

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 jest zgłaszane, gdy enkoder napotyka wewnętrzny błąd po pomyślnej walidacji danych wejściowych. Jest to rzadsze niż InvalidInputError.

****Typowe przyczyny::

  • Dane, które przechodzą wstępną walidację, ale zawodzą podczas kodowania segmentu (np. dane QR Code przekraczające pojemność dla wybranego poziomu korekcji błędów)
  • Sprzeczne opcje kodowania (np. żądanie Code128EncodeMode.CODE_A przy danych zawierających małe litery)

Napraw: Przejrzyj opcje kodowania przekazane do generate(). Dla Code 128, użyj Code128EncodeMode.AUTO aby pozwolić kodownikowi wybrać optymalny podzbiór. Dla QR Code, spróbuj niższego QrErrorCorrectionLevel lub skrócić długość danych.

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 jest podnoszone, gdy nazwa symboliki przekazana do BarcodeService.generate() nie jest zarejestrowana w SymbologyRegistry.

****Typowe przyczyny::

  • Błędnie napisana nazwa symboliki (np. "code_128" zamiast "code128")
  • Używanie symboliki, która nie jest obsługiwana przez bibliotekę (biblioteka obsługuje wyłącznie Code 128, Code 39, EAN-13, EAN-8, QR Code, UPC-A oraz UPC-E)

Napraw: Użyj jednego z siedmiu obsługiwanych identyfikatorów symboliki: "code128", "code39", "ean13", "ean8", "qrcode", "upca", "upce". Nazwy nie rozróżniają wielkości liter, ale muszą odpowiadać zarejestrowanym identyfikatorom.

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 jest podnoszone, gdy renderowanie nie może wygenerować wyjścia z zakodowanego symbolu.

****Typowe przyczyny::

  • Nieprawidłowe wartości RenderOptions (np. ujemny scale lub module_width)
  • Próba użycia PdfRenderer (renderowanie PDF wywołuje NotImplementedError w bieżącej wersji)

Napraw: Użyj SvgRenderer or PngRenderer zamiast PdfRenderer. Zweryfikuj, że RenderOptions właściwości mają prawidłowe dodatnie wartości.

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 i UnsupportedFeatureError

UnsupportedCapabilityError jest podnoszony, gdy symbologia nie obsługuje żądanej funkcji (np. tryb GS1 dla symbologii, która nie ma wsparcia GS1). UnsupportedFeatureError jest podnoszony dla funkcji niezaimplementowanych w bibliotece.

Napraw: Sprawdź profil symbologii capabilities właściwość, aby potwierdzić, które funkcje są dostępne. Unikaj żądania trybu GS1 dla symbologii, które go nie obsługują.

Problemy środowiskowe

Wersja Python

Aspose.BarCode FOSS wymaga Python 3.12 lub nowszej. Jeśli widzisz SyntaxError lub błędy importu, sprawdź wersję Python:

python --version

Problemy z instalacją

Zbuduj pakiet ze źródeł.

Biblioteka jest czystym Python bez natywnych zależności. Jeśli instalacja się powiedzie, ale importy nie działają, sprawdź, czy nie zasłaniasz pakietu lokalnym plikiem o nazwie aspose_barcode_foss.py.

Błędy importu

Poprawny import to:

import aspose_barcode_foss

lub importuj konkretne klasy:

from aspose_barcode_foss import BarcodeService, RenderOptions

Najczęściej zadawane pytania

Dlaczego mój kod kreskowy EAN-13 wyświetla inną liczbę niż wprowadziłem?

EAN-13 automatycznie oblicza cyfrę kontrolną. Jeśli podasz 12 cyfr, 13. cyfra jest dołączana. Jeśli podasz 13 cyfr, ostatnia cyfra jest weryfikowana jako cyfra kontrolna. Użyj własności Ean13Options allow_check_digit_input, aby kontrolować to zachowanie.

Dlaczego wyjście PDF zgłasza NotImplementedError?

PdfRenderer.render() i Barcode.to_pdf() nie są jeszcze zaimplementowane. Użyj zamiast nich Barcode.to_svg() lub Barcode.to_png(), albo renderuj bezpośrednio przy użyciu SvgRenderer lub PngRenderer.

Jak zdebugować, które nazwy symbologii są dostępne?

Użyj SymbologyRegistry.get_definition(), aby sprawdzić, czy symbologia jest zarejestrowana. Jeśli zgłasza SymbologyNotFoundError, symbologia nie jest dostępna. Siedem obsługiwanych symbologii to: Code 128, Code 39, EAN-13, EAN-8, QR Code, UPC-A oraz UPC-E.

Zobacz także

 Polski