Как работать с 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 без состояния; каждый вызов независим.