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 questionsPagina-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.VerticalLay-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
GlobalPageSettingsin 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.ExtraRowvoegt een leidende rij van aangepaste symbolen toe zonderColumnsCountte wijzigen.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
Inhoud wordt niet bijgesneden, zelfs niet wanneer Overflow is ingesteld | De renderengine van deze release houdt nog geen rekening met Overflow/LongWordHandling | Nog niet beschikbaar — gevolgd in de upstream roadmap |
SaveAsPdf() veroorzaakt NotImplementedError | PDF-export is niet geïmplementeerd in deze release | Gebruik 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/Methode | Beschrijving |
|---|---|
TemplateConfig | Documentroot die PageConfig pagina’s bevat |
PageConfig | Eén fysieke pagina |
ChoiceBoxConfig / CheckBoxConfig / GridConfig / CompositeGridConfig / AnswerSheetConfig | Vraag-elementconfiguraties |
BlockConfig / ContainerConfig / PositionedBlockConfig | Lay-outcontainers |
GlobalPageSettings | Documentbrede standaardinstellingen |