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 questions

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

Layout, 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 GlobalPageSettings anziché ripeterli su ogni elemento.
  • Usa il DSL di markup per iterazioni rapide; passa all’albero code-first per la generazione programmatica.
  • CompositeGridConfig.ExtraRow aggiunge una riga iniziale di simboli personalizzati senza modificare ColumnsCount.

Problemi comuni

ProblemaCausaCorrezione
Il contenuto non viene ritagliato anche con Overflow impostatoIl motore di rendering di questa versione non rispetta ancora Overflow/LongWordHandlingNon ancora disponibile — tracciato nella roadmap upstream
SaveAsPdf() genera NotImplementedErrorL’esportazione PDF non è implementata in questa versioneUsa 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/MetodoDescrizione
TemplateConfigRadice del documento contenente PageConfig pagine
PageConfigUna pagina fisica
ChoiceBoxConfig / CheckBoxConfig / GridConfig / CompositeGridConfig / AnswerSheetConfigConfigurazioni dell’elemento domanda
BlockConfig / ContainerConfig / PositionedBlockConfigContenitori di layout
GlobalPageSettingsImpostazioni predefinite a livello di documento

Vedi anche

 Italiano