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 questions

Seitenweite 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.Vertical

Layout, Ü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 GlobalPageSettings fest, 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.ExtraRow fügt eine führende Zeile benutzerdefinierter Symbole hinzu, ohne ColumnsCount zu ändern.

Häufige Probleme

ProblemUrsacheLösung
Inhalt wird nicht abgeschnitten, selbst wenn Overflow gesetzt istDie Render-Engine dieser Version berücksichtigt noch nicht Overflow/LongWordHandlingNoch nicht verfügbar — wird in der Upstream-Roadmap verfolgt
SaveAsPdf() löst NotImplementedError ausPDF-Export ist in dieser Version nicht implementiertVerwenden 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/MethodeBeschreibung
TemplateConfigDokumentwurzel, die PageConfig-Seiten enthält
PageConfigEine physische Seite
ChoiceBoxConfig / CheckBoxConfig / GridConfig / CompositeGridConfig / AnswerSheetConfigKonfigurationen des Frageelements
BlockConfig / ContainerConfig / PositionedBlockConfigLayout-Container
GlobalPageSettingsDokumentenweite Vorgaben

Siehe auch

 Deutsch