Generation
Generation
Die Generierungsschicht (omr.generation) erstellt eine Vorlage — einen Baum von Elementkonfigurationen — und rendert sie zu einem Seitenbild plus einem .omr-Deskriptor über OmrEngine.Generate().
Der Vorlagenbaum
TemplateConfig ist die Dokumentwurzel und enthält ein oder mehrere PageConfig-Objekte. Jedes Element unterhalb einer Seite ist eine Unterklasse von BaseConfig und trägt einen Name sowie einen 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]Frageelemente
ChoiceBoxConfig— eine Frage mit einem festen Satz von Optionsblasen (ChoiceBoxAnswerConfig), die Mehrfachauswahl und pro-Frage-Validierung unterstützt.AnswerSheetConfig— eine nummerierte Antwortblasen-Matrix für prüfungsähnliche Formulare.CheckBoxConfig— eine bezeichnete Gruppe leerer Kästchen, die jede Markierung akzeptieren, mit einem einstellbaren Füllschwellenwert.GridConfig/CompositeGridConfig— Ziffern- oder benutzerdefinierte Symbolmatrizen, die zu einem Wert zusammengeführt werden.
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 questionsSeitenweite Einstellungen
GlobalPageSettings legt dokumentweite Vorgaben fest (Papiergröße, Ausrichtung, Schriftart, Blasengröße), die einzelne Elemente überschreiben können. PaperSize und Orientation können direkt von omr.generation importiert werden.
from omr.generation import GlobalPageSettings, Orientation, PaperSize
settings = GlobalPageSettings()
settings.PaperSize = PaperSize.A4
settings.Orientation = Orientation.VerticalLayout, Überlauf und Schriftsysteme
BlockConfig ist ein umrandeter, gepolsterter Kasten; ContainerConfig ordnet Kindblöcke in Spalten oder eine Fußzeile; PositionedBlockConfig positioniert Kinder bei absoluten Koordinaten. LongWordHandling, die OverflowAction Unterklassen (Clip, NoClip, Wrap), und die Arabic/Hebrew/Persian/Urdu/Bengali Schriftsysteme parsen und validieren korrekt für API-Treue mit der Aspose.OMR Oberfläche, aber keiner von ihnen wird von der Rendering-Engine dieser Version noch berücksichtigt: Das Überlaufverhalten ist noch nicht konfigurierbar, und das Rendering ist nur LTR/Western-only.
Die Markup-DSL
Der gleiche Elementbaum kann als Klartext geschrieben und direkt an Generate() übergeben werden.
from omr.api import OmrEngine
markup = ["?choicebox=Rate it", "(1) Poor (2) Fair (3) Good", "&choicebox"]
engine = OmrEngine()
result = engine.Generate(markup)Tipps und bewährte Verfahren
- Legen Sie geteilte Vorgaben einmal auf
GlobalPageSettingsfest, anstatt sie bei jedem Element zu wiederholen. - Verwenden Sie die Markup-DSL für schnelle Iteration; wechseln Sie zum Code-First-Baum für programmatische Erzeugung.
CompositeGridConfig.ExtraRowfügt eine führende Zeile benutzerdefinierter Symbole hinzu, ohneColumnsCountzu ändern.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
Inhalt wird nicht abgeschnitten, selbst wenn Overflow gesetzt ist | Die Render-Engine dieser Version berücksichtigt noch nicht Overflow/LongWordHandling | Noch nicht verfügbar — wird in der Upstream-Roadmap verfolgt |
SaveAsPdf() löst NotImplementedError aus | PDF-Export ist in dieser Version nicht implementiert | Verwenden Sie Save() für PNG-Ausgabe |
FAQ
Kann ich die Markup-DSL und Code-First-Konfigurationen in derselben Vorlage mischen?
Die beiden sind alternative Methoden, denselben TemplateConfig-Baum zu erstellen; die Generate() dieser Version akzeptiert entweder eine Markup-Quelle oder eine TemplateConfig-Instanz, nicht eine Mischung in einem Aufruf.
Wie funktionieren mehrseitige Vorlagen?
TemplateConfig.Children enthält mehrere PageConfig-Objekte; GenerationResult.MultipageTemplateImages gibt ein Bild pro Seite zurück.
API Reference Zusammenfassung
| Klasse/Methode | Beschreibung |
|---|---|
TemplateConfig | Dokumentwurzel, die PageConfig-Seiten enthält |
PageConfig | Eine physische Seite |
ChoiceBoxConfig / CheckBoxConfig / GridConfig / CompositeGridConfig / AnswerSheetConfig | Konfigurationen des Frageelements |
BlockConfig / ContainerConfig / PositionedBlockConfig | Layout-Container |
GlobalPageSettings | Dokumentenweite Vorgaben |