Generation

Generation

Stratul de generare (omr.generation) construiește un șablon — un arbore de configurări de elemente — și îl redă într-o imagine de pagină plus un descriptor .omr prin OmrEngine.Generate().


Arborele de șablon

TemplateConfig este rădăcina documentului, conținând unul sau mai multe obiecte PageConfig. Fiecare element de sub o pagină este o subclasă a BaseConfig, având un Name și un discriminator 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]

Elemente de întrebare

  • ChoiceBoxConfig — o întrebare cu un set fix de bule de opțiune (ChoiceBoxAnswerConfig), suportând selecție multiplă și validare per-întrebare.
  • AnswerSheetConfig — o matrice numerotată de bule de răspuns pentru foi de tip examen.
  • CheckBoxConfig — un grup etichetat de casete goale care acceptă orice marcă, cu un prag de umplere reglabil.
  • GridConfig / CompositeGridConfig — matrici de cifre sau simboluri personalizate fuzionate într-o singură valoare.
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

Setări la nivel de pagină

GlobalPageSettings stabilește valorile implicite la nivel de document (dimensiunea hârtiei, orientarea, fontul, dimensiunea bulelor) pe care elementele individuale le pot suprascrie. PaperSize și Orientation pot fi importate direct din omr.generation.

from omr.generation import GlobalPageSettings, Orientation, PaperSize

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

Aranjament, Depășire și Sisteme de Scriere

BlockConfig este o cutie cu bordură și spațiere; ContainerConfig aranjează blocurile copil în coloane sau într-un subsol; PositionedBlockConfig plasează copiii la coordonate absolute. LongWordHandling, subclasele OverflowAction (Clip, NoClip, Wrap), și sistemele de scriere Arabic/Hebrew/Persian/Urdu/Bengali parsează și validează corect pentru fidelitatea API cu suprafața Aspose.OMR, dar niciunul dintre ele nu este încă respectat de motorul de randare al acestei versiuni: comportamentul de depășire nu este încă configurabil, iar randarea este doar LTR/Western. Ambele sunt urmărite pe upstream roadmap ca neimplementate încă.

DSL-ul de marcare

Același arbore de elemente poate fi scris ca text simplu și transmis direct către Generate().

from omr.api import OmrEngine

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

Sfaturi și bune practici

  • Setați valorile implicite partajate o singură dată pe GlobalPageSettings în loc să le repetați pe fiecare element.
  • Utilizați DSL-ul de markup pentru iterații rapide; treceți la arborele code-first pentru generare programatică.
  • CompositeGridConfig.ExtraRow adaugă un rând inițial de simboluri personalizate fără a modifica ColumnsCount.

Probleme comune

ProblemăCauzăRemediere
Conținutul nu este decupat chiar și cu Overflow setatMotorul de redare al acestei versiuni nu respectă încă Overflow/LongWordHandlingÎncă nu este disponibil — urmărit în planul de dezvoltare upstream
SaveAsPdf() generează NotImplementedErrorExportul PDF nu este implementat în această versiuneUtilizați Save() pentru ieșirea PNG

FAQ

Pot combina DSL-ul de markup și configurațiile code-first în același șablon?

Cele două sunt modalități alternative de a construi același arbore TemplateConfig; Generate() al acestei versiuni acceptă fie o sursă de markup, fie o instanță TemplateConfig, nu un amestec într-un singur apel.

Cum funcționează șabloanele cu mai multe pagini?

TemplateConfig.Children conține multiple obiecte PageConfig; GenerationResult.MultipageTemplateImages returnează o imagine pe pagină.


API Reference Rezumat

Clasă/MetodăDescriere:
TemplateConfigRădăcina documentului care conține pagini PageConfig
PageConfigO pagină fizică
ChoiceBoxConfig / CheckBoxConfig / GridConfig / CompositeGridConfig / AnswerSheetConfigConfigurări ale elementului de întrebare
BlockConfig / ContainerConfig / PositionedBlockConfigContainere de aspect
GlobalPageSettingsSetări implicite la nivel de document

Vezi și:

 Română