Generation
Generation
Il livello di generazione (omr.generation) crea un modello — un albero di configurazioni di elemento — e lo rende in un’immagine di pagina più un descrittore .omr tramite OmrEngine.Generate().
L’albero del modello
TemplateConfig è la radice del documento, contenente uno o più oggetti PageConfig. Ogni elemento sotto una pagina è una sottoclasse di BaseConfig, che porta un Name e un discriminatore Type (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]Elementi della domanda
ChoiceBoxConfig— una domanda con un insieme fisso di bolle di opzione (ChoiceBoxAnswerConfig), che supporta la selezione multipla e la convalida per domanda.AnswerSheetConfig— una matrice numerata di bolle di risposta per fogli in stile esame.CheckBoxConfig— un gruppo etichettato di caselle vuote che accetta qualsiasi segno, con una soglia di riempimento regolabile.GridConfig/CompositeGridConfig— matrici di cifre o simboli personalizzati fuse in un unico valore.
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 questionsImpostazioni a livello di pagina
GlobalPageSettings imposta i valori predefiniti per l’intero documento (dimensione della carta, orientamento, carattere, dimensione della bolla) che gli elementi individuali possono sovrascrivere. PaperSize e Orientation possono essere importati direttamente da omr.generation.
from omr.generation import GlobalPageSettings, Orientation, PaperSize
settings = GlobalPageSettings()
settings.PaperSize = PaperSize.A4
settings.Orientation = Orientation.VerticalLayout, Overflow e sistemi di scrittura
BlockConfig è una scatola con bordo e imbottitura; ContainerConfig dispone i blocchi figli in colonne o in un piè di pagina; PositionedBlockConfig posiziona i figli a coordinate assolute. LongWordHandling, le sottoclassi OverflowAction (Clip, NoClip, Wrap), e i sistemi di scrittura Arabic/Hebrew/Persian/Urdu/Bengali analizzano e convalidano correttamente per la fedeltà API con la superficie Aspose.OMR, ma nessuno di essi è ancora supportato dal motore di rendering di questa versione: il comportamento di overflow non è ancora configurabile e il rendering è solo LTR/Western. Entrambi sono monitorati nella roadmap upstream come non ancora implementati.
Il DSL di markup
Lo stesso albero di elementi può essere scritto come testo semplice e passato direttamente a Generate().
from omr.api import OmrEngine
markup = ["?choicebox=Rate it", "(1) Poor (2) Fair (3) Good", "&choicebox"]
engine = OmrEngine()
result = engine.Generate(markup)Suggerimenti e migliori pratiche
- Imposta i valori predefiniti condivisi una sola volta su
GlobalPageSettingsanziché ripeterli su ogni elemento. - Usa il DSL di markup per iterazioni rapide; passa all’albero code-first per la generazione programmatica.
CompositeGridConfig.ExtraRowaggiunge una riga iniziale di simboli personalizzati senza modificareColumnsCount.
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
Il contenuto non viene ritagliato anche con Overflow impostato | Il motore di rendering di questa versione non rispetta ancora Overflow/LongWordHandling | Non ancora disponibile — tracciato nella roadmap upstream |
SaveAsPdf() genera NotImplementedError | L’esportazione PDF non è implementata in questa versione | Usa Save() per l’output PNG |
FAQ
Posso mescolare il DSL di markup e le configurazioni code-first nello stesso template?
I due sono modi alternativi per costruire lo stesso albero TemplateConfig; il Generate() di questa release accetta sia una sorgente markup sia un’istanza TemplateConfig, ma non una combinazione in una singola chiamata.
Come funzionano i template a più pagine?
TemplateConfig.Children contiene più oggetti PageConfig; GenerationResult.MultipageTemplateImages restituisce un’immagine per pagina.
API Reference Riepilogo
| Classe/Metodo | Descrizione |
|---|---|
TemplateConfig | Radice del documento contenente PageConfig pagine |
PageConfig | Una pagina fisica |
ChoiceBoxConfig / CheckBoxConfig / GridConfig / CompositeGridConfig / AnswerSheetConfig | Configurazioni dell’elemento domanda |
BlockConfig / ContainerConfig / PositionedBlockConfig | Contenitori di layout |
GlobalPageSettings | Impostazioni predefinite a livello di documento |