Jak pracować z generacją w Python

Jak pracować z generacją w Python

Aspose.OMR FOSS dla Python tworzy formularz OMR z drzewa konfiguracji elementów z korzeniem w TemplateConfig, a następnie renderuje go do obrazu strony i deskryptora .omr przy użyciu OmrEngine.Generate(). Ten przewodnik przeprowadza przez tworzenie prostego szablonu arkusza odpowiedzi i jego generowanie.

Przewodnik krok po kroku

Krok 1: Zainstaluj pakiet

git clone https://github.com/aspose-omr-foss/Aspose.OMR-FOSS-for-Python.git
cd Aspose.OMR-FOSS-for-Python
pip install -e .
python -c "import omr; print('Aspose.OMR FOSS for Python is ready.')"

Krok 2: Zaimportuj wymagane klasy

from omr.api import OmrEngine
from omr.generation.config import TemplateConfig
from omr.generation.config.elements.parents import PageConfig
from omr.generation.config.elements import AnswerSheetConfig

Krok 3: Zbuduj drzewo szablonu

Utwórz korzeń TemplateConfig, PageConfig dla pojedynczej strony oraz AnswerSheetConfig dla 20-pytaniowej numerowanej macierzy odpowiedzi (4 dymki opcji na pytanie).

tpl = TemplateConfig()
tpl.Name = "quiz"
page = PageConfig()
sheet = AnswerSheetConfig()
sheet.Name = "answers"
sheet.AnswersCount = 4    # bubbles per question (e.g. A-D)
sheet.ElementsCount = 20  # number of questions
page.Children = [sheet]
tpl.Children = [page]

Krok 4: Generuj i zapisz

engine = OmrEngine()
gen = engine.Generate(tpl)
gen.Save("out", "quiz")   # -> out/quiz.png + out/quiz.omr

Typowe problemy i rozwiązania

Moja wygenerowana strona wygląda na pustą. Sprawdź, czy każdy element jest rzeczywiście dodany do elementu nadrzędnego Children listę — element skonstruowany, ale nigdy nie dołączony do strony (lub kontenera) Children nie jest nigdy renderowany.

Potrzebuję PDF zamiast PNG. Niedostępne w tym wydaniu — GenerationResult.SaveAsPdf() raises NotImplementedError. Użyj wyjścia PNG z Save() i przekonwertuj zewnętrznie, jeśli wymagany jest PDF.

Ustawiłem Overflow i nic się nie zmieniło. Silnik renderujący tej wersji nie honoruje jeszcze Overflow/LongWordHandling — wyliczenia są poprawnie parsowane i walidowane, ale zachowanie przy przepełnieniu nie jest jeszcze konfigurowalne. To jest śledzone w upstream roadmap.

Najczęściej zadawane pytania

Czy mogę zbudować ten sam szablon bez obiektów Python?

Tak — DSL znaczników tworzy to samo drzewo elementów z czystego tekstu, przekazywanego bezpośrednio do OmrEngine.Generate().

Jak wygenerować szablon wielostronicowy?

Dodaj więcej niż jeden PageConfig do TemplateConfig.Children; GenerationResult.MultipageTemplateImages zwraca jeden obraz na stronę.

Czy silnik zachowuje stan między wywołaniami Generate()?

Nie — OmrEngine jest bezstanowy; każde wywołanie jest niezależne.

Zobacz także

 Polski