Как работать с Generation в Python

Как работать с Generation в Python

Aspose.OMR FOSS for Python создает OMR-форму из дерева конфигураций элементов, корневой узел которого — TemplateConfig, затем рендерит её в изображение страницы и .omr дескриптор с помощью OmrEngine.Generate(). Это руководство проведет вас через создание простого шаблона листа ответов и его генерацию.

Пошаговое руководство

Шаг 1: Установите пакет

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.')"

Шаг 2: Импортируйте необходимые классы

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

Шаг 3: Постройте дерево шаблона

Создайте корневой TemplateConfig, PageConfig для единственной страницы и AnswerSheetConfig для 20-вопросной нумерованной матрицы ответов (по 4 варианта выбора на вопрос).

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]

Шаг 4: Сгенерировать и сохранить

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

Распространённые проблемы и их решения

Моя сгенерированная страница выглядит пустой. Убедитесь, что каждый элемент действительно добавлен к родителю Children списка — элемент, сконструированный, но никогда не присоединён к странице (или контейнеру) Children никогда не отрисовывается.

Мне нужен PDF вместо PNG. Недоступно в этом выпуске — GenerationResult.SaveAsPdf() raises NotImplementedError. Используйте PNG-вывод из Save() и выполните внешнее преобразование, если требуется PDF.

Я установил Overflow и ничего не изменилось. Рендер-движок этого релиза пока не учитывает Overflow/LongWordHandling — перечисления правильно разбираются и проверяются, но поведение при переполнении пока не настраиваемо. Это отслеживается в дорожной карте upstream.

Часто задаваемые вопросы

Могу ли я создать тот же шаблон без объектов Python?

Да — DSL разметки создает то же дерево элементов из простого текста, передаваемого напрямую в OmrEngine.Generate().

Как сгенерировать многостраничный шаблон?

Добавьте более одного PageConfig в TemplateConfig.Children; GenerationResult.MultipageTemplateImages возвращает одно изображение на страницу.

Сохраняет ли движок состояние между вызовами Generate()?

Нет — OmrEngine без состояния; каждый вызов независим.

См. также:

 Русский