Generation

Generation

Шар генерації (omr.generation) створює шаблон — дерево конфігурацій елементів — і відображає його у зображення сторінки плюс .omr дескриптор за допомогою OmrEngine.Generate().


Дерево шаблону

TemplateConfig — кореневий документ, що містить один або кілька об’єктів PageConfig. Кожен елемент під сторінкою є підкласом BaseConfig, який має Name та дискримінатор Type (ConfigType).

from omr.generation.config import TemplateConfig
from omr.generation.config.elements.parents import PageConfig

tpl = TemplateConfig()
tpl.Name = "quiz"
page = PageConfig()
page.Children = []
tpl.Children = [page]

Елементи запитань

  • ChoiceBoxConfig — запитання з фіксованим набором варіантних бульбашок (ChoiceBoxAnswerConfig), що підтримує мультивибір та валідацію для кожного запитання.
  • AnswerSheetConfig — нумерована матриця відповідних бульбашок для екзаменаційних листків.
  • CheckBoxConfig — позначена група порожніх квадратів, що приймає будь-який знак, з налаштовуваним порогом заповнення.
  • GridConfig / CompositeGridConfig — цифрові або користувацькі матриці символів, об’єднані в одне значення.
from omr.generation.config.elements import AnswerSheetConfig

sheet = AnswerSheetConfig()
sheet.Name = "answers"
sheet.AnswersCount = 4    # bubbles per question (e.g. A-D)
sheet.ElementsCount = 20  # number of questions

Налаштування на рівні сторінки

GlobalPageSettings встановлює типові налаштування для всього документа (розмір паперу, орієнтація, шрифт, розмір бульбашки), які окремі елементи можуть перевизначати. PaperSize і Orientation можна імпортувати безпосередньо з omr.generation.

from omr.generation import GlobalPageSettings, Orientation, PaperSize

settings = GlobalPageSettings()
settings.PaperSize = PaperSize.A4
settings.Orientation = Orientation.Vertical

Розмітка, переповнення та системи письма

BlockConfig — це коробка з межами та відступами; ContainerConfig розташовує дочірні блоки в колонки або у підвал; PositionedBlockConfig розміщує дочірні елементи за абсолютними координатами. LongWordHandling, підкласи OverflowAction (Clip, NoClip, Wrap) та системи письма Arabic/Hebrew/Persian/Urdu/Bengali усі правильно розбираються та валідуються для точності API з поверхнею Aspose.OMR, але жодна з них ще не підтримується рендер-двигуном цього випуску: поведінка переповнення ще не конфігурована, а рендеринг лише LTR/західний. Обидва відстежуються у upstream roadmap як ще не реалізовані.

DSL розмітки

Те ж дерево елементів можна записати як простий текст і передати безпосередньо до Generate().

from omr.api import OmrEngine

markup = ["?choicebox=Rate it", "(1) Poor (2) Fair (3) Good", "&choicebox"]
engine = OmrEngine()
result = engine.Generate(markup)

Поради та найкращі практики

  • Встановіть спільні параметри за замовчуванням один раз у GlobalPageSettings, замість того, щоб повторювати їх у кожному елементі.
  • Використовуйте DSL розмітки для швидкої ітерації; перейдіть до дерева code-first для програмної генерації.
  • CompositeGridConfig.ExtraRow додає початковий рядок користувацьких символів без зміни ColumnsCount.

Поширені проблеми

ПроблемаПричинаВиправлення
Вміст не обрізується навіть при встановленому OverflowРендер-двигун цього випуску ще не підтримує Overflow/LongWordHandlingЩе недоступно — відстежується у дорожній карті upstream
SaveAsPdf() викликає NotImplementedErrorЕкспорт у PDF не реалізовано у цьому випускуВикористовуйте Save() для виведення PNG

FAQ

Чи можу я змішувати DSL розмітки та конфігурації code-first в одному шаблоні?

Ці два — альтернативні способи побудови одного і того ж дерева TemplateConfig; Generate() цього випуску приймає або джерело розмітки, або екземпляр TemplateConfig, але не їх суміш в одному виклику.

Як працюють багатосторінкові шаблони?

TemplateConfig.Children містить кілька об’єктів PageConfig; GenerationResult.MultipageTemplateImages повертає одне зображення на сторінку.


API Reference Підсумок

Клас/МетодОпис
TemplateConfigКореневий каталог документа, що містить PageConfig сторінок
PageConfigОдна фізична сторінка
ChoiceBoxConfig / CheckBoxConfig / GridConfig / CompositeGridConfig / AnswerSheetConfigКонфігурації елементу питання
BlockConfig / ContainerConfig / PositionedBlockConfigКонтейнери макету
GlobalPageSettingsТипові налаштування документа

Дивіться також

 Українська