Wie man mit Generation in Python arbeitet
Aspose.OMR FOSS für Python erstellt ein OMR-Formular aus einem Baum von Elementkonfigurationen, der bei TemplateConfig wurzelt, und rendert es dann zu einem Seitenbild und einem .omr-Deskriptor mit OmrEngine.Generate(). Dieser Leitfaden führt durch den Aufbau einer einfachen Antwortbogen-Vorlage und deren Generierung.
Schritt-für-Schritt-Anleitung
Schritt 1: Paket installieren
git clone https://github.com/aspose-omr-foss/Aspose.OMR-FOSS-for-Python.git
cd Aspose.OMR-FOSS-for-Python
pip install -e .python -c "import omr; print('Aspose.OMR FOSS for Python is ready.')"Schritt 2: Erforderliche Klassen importieren
from omr.api import OmrEngine
from omr.generation.config import TemplateConfig
from omr.generation.config.elements.parents import PageConfig
from omr.generation.config.elements import AnswerSheetConfigSchritt 3: Template-Baum erstellen
Erstelle ein TemplateConfig-Root, ein PageConfig für die einzelne Seite und ein AnswerSheetConfig für eine nummerierte Antwortmatrix mit 20 Fragen (4 Optionsblasen pro Frage).
tpl = TemplateConfig()
tpl.Name = "quiz"
page = PageConfig()
sheet = AnswerSheetConfig()
sheet.Name = "answers"
sheet.AnswersCount = 4 # bubbles per question (e.g. A-D)
sheet.ElementsCount = 20 # number of questions
page.Children = [sheet]
tpl.Children = [page]Schritt 4: Generieren und Speichern
engine = OmrEngine()
gen = engine.Generate(tpl)
gen.Save("out", "quiz") # -> out/quiz.png + out/quiz.omrHäufige Probleme und Lösungen
Meine erzeugte Seite sieht leer aus. Überprüfen Sie, dass jedes Element tatsächlich zu einem Elternteil Children Liste — ein Element, das konstruiert, aber nie an die einer Seite (oder eines Containers) angehängt wird Children wird nie gerendert.
Ich benötige ein PDF anstelle eines PNG. In diesem Release nicht verfügbar — GenerationResult.SaveAsPdf() raises NotImplementedError. Verwenden Sie die PNG-Ausgabe von Save() und konvertieren Sie extern, falls ein PDF benötigt wird.
Ich setze Overflow und nichts änderte sich. Die Render-Engine dieses Releases beachtet noch nicht Overflow/LongWordHandling — die Enums werden korrekt geparst und validiert, aber das Überlaufverhalten ist noch nicht konfigurierbar. Dies wird im upstream roadmap verfolgt.
Häufig gestellte Fragen
Kann ich dieselbe Vorlage ohne Python Objekte erstellen?
Ja — das Markup-DSL erstellt denselben Elementbaum aus Klartext, der direkt an OmrEngine.Generate() übergeben wird.
Wie generiere ich eine mehrseitige Vorlage?
Füge mehr als ein PageConfig zu TemplateConfig.Children hinzu; GenerationResult.MultipageTemplateImages liefert ein Bild pro Seite.
Behält die Engine den Zustand zwischen Generate()-Aufrufen bei?
Nein — OmrEngine ist zustandslos; jeder Aufruf ist unabhängig.