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 questionsSidomfattande 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.VerticalLayout, Ö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å
GlobalPageSettingsistä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.ExtraRowlägger till en inledande rad med anpassade symboler utan att ändraColumnsCount.
Vanliga problem
| Problem | Orsak | Lösning |
|---|---|---|
Innehållet klipps inte av även om Overflow är satt | Denna releases renderingsmotor respekterar ännu inte Overflow/LongWordHandling | Inte tillgängligt ännu — spåras på uppströms färdplanen |
SaveAsPdf() utlöser NotImplementedError | PDF-export är inte implementerad i denna release | Anvä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/Metod | Beskrivning |
|---|---|
TemplateConfig | Dokumentrot som innehåller PageConfig sidor |
PageConfig | En fysisk sida |
ChoiceBoxConfig / CheckBoxConfig / GridConfig / CompositeGridConfig / AnswerSheetConfig | Konfigurationer för frågelement |
BlockConfig / ContainerConfig / PositionedBlockConfig | Layoutbehållare |
GlobalPageSettings | Standardinställningar för hela dokumentet |