Generation

Generation

De generatie-laag (omr.generation) bouwt een sjabloon — een boom van elementconfiguraties — en rendert deze naar een paginabeeld plus een .omr descriptor via OmrEngine.Generate().


De sjabloonboom

TemplateConfig is de documentroot, die één of meer PageConfig objecten bevat. Elk element onder een pagina is een subklasse van BaseConfig, met een Name en een Type discriminator (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]

Vraag-elementen

  • ChoiceBoxConfig — een vraag met een vaste set optie-bubbels (ChoiceBoxAnswerConfig), die multi-selectie en per-vraagvalidatie ondersteunt.
  • AnswerSheetConfig — een genummerde antwoord-bubbelsmatrix voor examen-achtige bladen.
  • CheckBoxConfig — een gelabelde groep lege vakken die elk teken accepteren, met een instelbare vuldrempel.
  • GridConfig / CompositeGridConfig — cijfer- of aangepaste-symboolmatrixen samengevoegd tot één waarde.
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

Pagina-brede instellingen

GlobalPageSettings stelt document-brede standaardinstellingen in (papierformaat, oriëntatie, lettertype, bubbelgrootte) die individuele elementen kunnen overschrijven. PaperSize en Orientation kunnen rechtstreeks worden geïmporteerd vanuit omr.generation.

from omr.generation import GlobalPageSettings, Orientation, PaperSize

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

Lay-out, overflow en schrijfsystemen

BlockConfig is een begrensde, opgevulde doos; ContainerConfig rangschikt kindblokken in kolommen of een voettekst; PositionedBlockConfig plaatst kinderen op absolute coördinaten. LongWordHandling, de OverflowAction subklassen (Clip, NoClip, Wrap), en de Arabic/Hebrew/Persian/Urdu/Bengali schrijfsystemen parseren en valideren correct voor API getrouwheid met het Aspose.OMR oppervlak, maar geen van hen wordt nog gerespecteerd door de renderengine van deze release: overflow-gedrag is nog niet configureerbaar, en renderen is alleen LTR/Westers. Beide staan op de upstream-roadmap als nog niet geïmplementeerd.

De Markup-DSL

Dezelfde elementboom kan als platte tekst worden geschreven en rechtstreeks worden doorgegeven aan Generate().

from omr.api import OmrEngine

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

Tips en best practices

  • Stel gedeelde standaardwaarden één keer in op GlobalPageSettings in plaats van ze op elk element te herhalen.
  • Gebruik de markup DSL voor snelle iteratie; schakel over naar de code-first boom voor programmatische generatie.
  • CompositeGridConfig.ExtraRow voegt een leidende rij van aangepaste symbolen toe zonder ColumnsCount te wijzigen.

Veelvoorkomende problemen

ProbleemOorzaakOplossing
Inhoud wordt niet bijgesneden, zelfs niet wanneer Overflow is ingesteldDe renderengine van deze release houdt nog geen rekening met Overflow/LongWordHandlingNog niet beschikbaar — gevolgd in de upstream roadmap
SaveAsPdf() veroorzaakt NotImplementedErrorPDF-export is niet geïmplementeerd in deze releaseGebruik Save() voor PNG-uitvoer

FAQ

Kan ik de markup DSL en code-first configuraties combineren in dezelfde template?

De twee zijn alternatieve manieren om dezelfde TemplateConfig boom te bouwen; de Generate() van deze release accepteert ofwel een markup-bron of een TemplateConfig-instantie, maar geen mix in één oproep.

Hoe werken sjablonen met meerdere pagina’s?

TemplateConfig.Children bevat meerdere PageConfig objecten; GenerationResult.MultipageTemplateImages geeft één afbeelding per pagina terug.


API Reference Samenvatting

Klasse/MethodeBeschrijving
TemplateConfigDocumentroot die PageConfig pagina’s bevat
PageConfigEén fysieke pagina
ChoiceBoxConfig / CheckBoxConfig / GridConfig / CompositeGridConfig / AnswerSheetConfigVraag-elementconfiguraties
BlockConfig / ContainerConfig / PositionedBlockConfigLay-outcontainers
GlobalPageSettingsDocumentbrede standaardinstellingen

Zie ook

 Nederlands