Generation

Generation

Genereringslagret (omr.generation) bygger en mall — ett träd av elementkonfigurationer — och renderar den till en sidavbildning plus en .omr-beskrivare via OmrEngine.Generate().


Mallträdet

TemplateConfig är dokumentroten, som innehåller ett eller flera PageConfig-objekt. Varje element under en sida är en subklass av BaseConfig, som bär en Name och en Type-diskriminator (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]

Frågeelement

  • ChoiceBoxConfig — en fråga med en fast uppsättning alternativbubblor (ChoiceBoxAnswerConfig), som stödjer flerval och validering per fråga.
  • AnswerSheetConfig — en numrerad svarbubblermatris för provliknande blad.
  • CheckBoxConfig — en märkt grupp av tomma rutor som accepterar vilket tecken som helst, med ett justerbart fyllnadströskelvärde.
  • GridConfig / CompositeGridConfig — siffra- eller anpassade-symbolmatriser sammanslagna till ett värde.
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

Sidomfattande inställningar

GlobalPageSettings anger dokumentomfattande standardvärden (pappersstorlek, orientering, typsnitt, bubbelförstorlek) som enskilda element kan åsidosätta. PaperSize och Orientation kan importeras direkt från omr.generation.

from omr.generation import GlobalPageSettings, Orientation, PaperSize

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

Layout, Överflöde och skriftsystem

BlockConfig är en ramad, vadderad låda; ContainerConfig ordnar barnblock i kolumner eller i en sidfot; PositionedBlockConfig placerar barn på absoluta koordinater. LongWordHandling, OverflowAction-subklasserna (Clip, NoClip, Wrap), och Arabic/Hebrew/Persian/Urdu/Bengali-skriftsystemen parsar och validerar korrekt för API-fidelitet med Aspose.OMR-ytan, men ingen av dem respekteras ännu av denna releases renderingsmotor: överspillsbeteende är ännu inte konfigurerbart, och rendering är enbart LTR/Västlig. Båda spåras i den uppströms färdplanen som ännu ej implementerade.

Markup-DSL

Samma elementträd kan skrivas som vanlig text och skickas direkt till Generate().

from omr.api import OmrEngine

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

Tips och bästa praxis

  • Ställ in delade standardvärden en gång på GlobalPageSettings istället för att upprepa dem på varje element.
  • Använd markup DSL för snabb iteration; byt till kod-först-trädet för programmatisk generering.
  • CompositeGridConfig.ExtraRow lägger till en inledande rad med anpassade symboler utan att ändra ColumnsCount.

Vanliga problem

ProblemOrsakLösning
Innehållet klipps inte av även om Overflow är sattDenna releases renderingsmotor respekterar ännu inte Overflow/LongWordHandlingInte tillgängligt ännu — spåras på uppströms färdplanen
SaveAsPdf() utlöser NotImplementedErrorPDF-export är inte implementerad i denna releaseAnvänd Save() för PNG-utdata

FAQ

Kan jag blanda markup DSL och kod-först-konfigurationer i samma mall?

De två är alternativa sätt att bygga samma TemplateConfig-träd; den här versionens Generate() accepterar antingen en markup-källa eller en TemplateConfig-instans, men inte en blandning i ett och samma anrop.

Hur fungerar mallar med flera sidor?

TemplateConfig.Children innehåller flera PageConfig objekt; GenerationResult.MultipageTemplateImages returnerar en bild per sida.


API Reference Sammanfattning

Klass/MetodBeskrivning
TemplateConfigDokumentrot som innehåller PageConfig sidor
PageConfigEn fysisk sida
ChoiceBoxConfig / CheckBoxConfig / GridConfig / CompositeGridConfig / AnswerSheetConfigKonfigurationer för frågelement
BlockConfig / ContainerConfig / PositionedBlockConfigLayoutbehållare
GlobalPageSettingsStandardinställningar för hela dokumentet

Se även

 Svenska