Hur man arbetar med Generation i Python
Aspose.OMR FOSS för Python bygger ett OMR-formulär från ett träd av elementkonfigurationer med roten i TemplateConfig, renderar det sedan till en sidbild och .omr-beskrivning med OmrEngine.Generate(). Denna guide går igenom att bygga en enkel svarspappersmall och generera den.
Steg-för-steg-guide
Steg 1: Installera paketet
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.')"Steg 2: Importera nödvändiga klasser
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 AnswerSheetConfigSteg 3: Bygg mallträdet
Skapa ett TemplateConfig root, ett PageConfig för den enda sidan, och ett AnswerSheetConfig för en 20-frågor numrerad svarsmatris (4 alternativbubblor per fråga).
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]Steg 4: Generera och spara
engine = OmrEngine()
gen = engine.Generate(tpl)
gen.Save("out", "quiz") # -> out/quiz.png + out/quiz.omrVanliga problem och lösningar
Min genererade sida ser tom ut. Kontrollera att varje element faktiskt läggs till i en förälders Children lista — ett element som konstruerats men aldrig bifogats till en sidas (eller en behållares) Children renderas aldrig.
Jag behöver en PDF istället för en PNG. Inte tillgänglig i den här utgåvan — GenerationResult.SaveAsPdf() raises NotImplementedError. Använd PNG-utdata från Save() och konvertera externt om en PDF krävs.
Jag sätter Overflow och inget förändrades. Denna releasens renderingsmotor har ännu inte stöd för Overflow/LongWordHandling — enumen parsas och valideras korrekt, men overflow-beteendet är ännu inte konfigurerbart. Detta spåras i den överordnade färdplanen.
Vanliga frågor
Kan jag bygga samma mall utan Python objekt?
Ja — markup DSL bygger samma elementträd från vanlig text, som skickas direkt till OmrEngine.Generate().
Hur genererar jag en flersidig mall?
Lägg till mer än en PageConfig i TemplateConfig.Children; GenerationResult.MultipageTemplateImages returnerar en bild per sida.
Behåller motorn tillstånd mellan Generate()-anrop?
Nej — OmrEngine är stateless; varje anrop är oberoende.