Come lavorare con Generation in Python

Come lavorare con Generation in Python

Aspose.OMR FOSS per Python costruisce un modulo OMR da un albero di configurazioni di elementi radicato in TemplateConfig, poi lo rende in un’immagine di pagina e descrittore .omr con OmrEngine.Generate(). Questa guida illustra la creazione di un modello di foglio di risposte semplice e la sua generazione.

Guida passo-passo

Passo 1: Installa il pacchetto

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.')"

Passo 2: Importa le classi richieste

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 AnswerSheetConfig

Passo 3: Costruisci l’albero del modello

Crea una radice TemplateConfig, un PageConfig per la singola pagina e un AnswerSheetConfig per una matrice di risposte numerata a 20 domande (4 bolle di opzione per domanda).

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]

Passo 4: Genera e salva

engine = OmrEngine()
gen = engine.Generate(tpl)
gen.Save("out", "quiz")   # -> out/quiz.png + out/quiz.omr

Problemi comuni e soluzioni

La mia pagina generata sembra vuota. Verifica che ogni elemento sia effettivamente aggiunto al genitore Children lista — un elemento costruito ma mai aggiunto a una pagina (o a un contenitore) Children non viene mai renderizzato.

Ho bisogno di un PDF invece di un PNG. Non disponibile in questa versione — GenerationResult.SaveAsPdf() raises NotImplementedError. Usa l’output PNG da Save() e converti esternamente se è necessario un PDF.

Imposto Overflow e nulla è cambiato. Il motore di rendering di questa versione non rispetta ancora Overflow/LongWordHandling — gli enum vengono analizzati e validati correttamente, ma il comportamento di overflow non è ancora configurabile. Questo è monitorato nella roadmap upstream.

Domande frequenti

Posso creare lo stesso modello senza oggetti Python?

Sì — il DSL di markup genera lo stesso albero di elementi dal testo semplice, passato direttamente a OmrEngine.Generate().

Come genero un modello multipagina?

Aggiungi più di un PageConfig a TemplateConfig.Children; GenerationResult.MultipageTemplateImages restituisce un’immagine per pagina.

Il motore mantiene lo stato tra le chiamate a Generate()?

No — OmrEngine è senza stato; ogni chiamata è indipendente.

Vedi anche

 Italiano