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 AnswerSheetConfigKrok 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.omrTypowe 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.