Generation
Generation
Stratul de generare (omr.generation) construiește un șablon — un arbore de configurări de elemente — și îl redă într-o imagine de pagină plus un descriptor .omr prin OmrEngine.Generate().
Arborele de șablon
TemplateConfig este rădăcina documentului, conținând unul sau mai multe obiecte PageConfig. Fiecare element de sub o pagină este o subclasă a BaseConfig, având un Name și un discriminator 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]Elemente de întrebare
ChoiceBoxConfig— o întrebare cu un set fix de bule de opțiune (ChoiceBoxAnswerConfig), suportând selecție multiplă și validare per-întrebare.AnswerSheetConfig— o matrice numerotată de bule de răspuns pentru foi de tip examen.CheckBoxConfig— un grup etichetat de casete goale care acceptă orice marcă, cu un prag de umplere reglabil.GridConfig/CompositeGridConfig— matrici de cifre sau simboluri personalizate fuzionate într-o singură valoare.
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 questionsSetări la nivel de pagină
GlobalPageSettings stabilește valorile implicite la nivel de document (dimensiunea hârtiei, orientarea, fontul, dimensiunea bulelor) pe care elementele individuale le pot suprascrie. PaperSize și Orientation pot fi importate direct din omr.generation.
from omr.generation import GlobalPageSettings, Orientation, PaperSize
settings = GlobalPageSettings()
settings.PaperSize = PaperSize.A4
settings.Orientation = Orientation.VerticalAranjament, Depășire și Sisteme de Scriere
BlockConfig este o cutie cu bordură și spațiere; ContainerConfig aranjează blocurile copil în coloane sau într-un subsol; PositionedBlockConfig plasează copiii la coordonate absolute. LongWordHandling, subclasele OverflowAction (Clip, NoClip, Wrap), și sistemele de scriere Arabic/Hebrew/Persian/Urdu/Bengali parsează și validează corect pentru fidelitatea API cu suprafața Aspose.OMR, dar niciunul dintre ele nu este încă respectat de motorul de randare al acestei versiuni: comportamentul de depășire nu este încă configurabil, iar randarea este doar LTR/Western. Ambele sunt urmărite pe upstream roadmap ca neimplementate încă.
DSL-ul de marcare
Același arbore de elemente poate fi scris ca text simplu și transmis direct către Generate().
from omr.api import OmrEngine
markup = ["?choicebox=Rate it", "(1) Poor (2) Fair (3) Good", "&choicebox"]
engine = OmrEngine()
result = engine.Generate(markup)Sfaturi și bune practici
- Setați valorile implicite partajate o singură dată pe
GlobalPageSettingsîn loc să le repetați pe fiecare element. - Utilizați DSL-ul de markup pentru iterații rapide; treceți la arborele code-first pentru generare programatică.
CompositeGridConfig.ExtraRowadaugă un rând inițial de simboluri personalizate fără a modificaColumnsCount.
Probleme comune
| Problemă | Cauză | Remediere |
|---|---|---|
Conținutul nu este decupat chiar și cu Overflow setat | Motorul de redare al acestei versiuni nu respectă încă Overflow/LongWordHandling | Încă nu este disponibil — urmărit în planul de dezvoltare upstream |
SaveAsPdf() generează NotImplementedError | Exportul PDF nu este implementat în această versiune | Utilizați Save() pentru ieșirea PNG |
FAQ
Pot combina DSL-ul de markup și configurațiile code-first în același șablon?
Cele două sunt modalități alternative de a construi același arbore TemplateConfig; Generate() al acestei versiuni acceptă fie o sursă de markup, fie o instanță TemplateConfig, nu un amestec într-un singur apel.
Cum funcționează șabloanele cu mai multe pagini?
TemplateConfig.Children conține multiple obiecte PageConfig; GenerationResult.MultipageTemplateImages returnează o imagine pe pagină.
API Reference Rezumat
| Clasă/Metodă | Descriere: |
|---|---|
TemplateConfig | Rădăcina documentului care conține pagini PageConfig |
PageConfig | O pagină fizică |
ChoiceBoxConfig / CheckBoxConfig / GridConfig / CompositeGridConfig / AnswerSheetConfig | Configurări ale elementului de întrebare |
BlockConfig / ContainerConfig / PositionedBlockConfig | Containere de aspect |
GlobalPageSettings | Setări implicite la nivel de document |