Як працювати з генерацією у Python
Aspose.OMR FOSS для 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 list — елемент, створений, але ніколи не приєднаний до сторінки (або контейнера) Children ніколи не відображається.
Мені потрібен PDF замість PNG. Недоступно у цьому випуску — GenerationResult.SaveAsPdf() raises NotImplementedError. Використайте PNG-вихід з Save() і конвертуйте зовні, якщо потрібен PDF.
Я встановив Overflow і нічого не змінилося. Рендер-двигун цього випуску ще не враховує Overflow/LongWordHandling — перерахування (enum) аналізуються та валідуються правильно, але поведінка при переповненні ще не налаштовується. Це відстежується у дорожній карті upstream.
Поширені запитання
Чи можу я створити той самий шаблон без Python об’єктів?
Так — DSL розмітки створює те саме дерево елементів з простого тексту, переданого безпосередньо до OmrEngine.Generate().
Як створити багатосторінковий шаблон?
Додайте більше одного PageConfig до TemplateConfig.Children; GenerationResult.MultipageTemplateImages повертає одне зображення на сторінку.
Чи зберігає двигун стан між викликами Generate()?
Ні — OmrEngine без стану; кожен виклик є незалежним.