Generation
Generation
Warstwa generowania (omr.generation) tworzy szablon — drzewo konfiguracji elementów — i renderuje go do obrazu strony oraz deskryptora .omr za pomocą OmrEngine.Generate().
Drzewo szablonu
TemplateConfig jest korzeniem dokumentu, zawierającym jedną lub więcej obiektów PageConfig. Każdy element poniżej strony jest podklasą BaseConfig, posiadającą Name oraz dyskryminator 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]Elementy pytania
ChoiceBoxConfig— pytanie z ustalonym zestawem bąbelków opcji (ChoiceBoxAnswerConfig), obsługujące wielokrotny wybór i walidację dla każdego pytania.AnswerSheetConfig— numerowana macierz bąbelków odpowiedzi dla arkuszy egzaminacyjnych.CheckBoxConfig— oznaczona grupa pustych pól akceptująca dowolny znak, z regulowanym progiem wypełnienia.GridConfig/CompositeGridConfig— macierze cyfr lub niestandardowych symboli połączone w jedną wartość.
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 questionsUstawienia całej strony
GlobalPageSettings ustawia domyślne wartości dla całego dokumentu (rozmiar papieru, orientacja, czcionka, rozmiar bąbelka), które poszczególne elementy mogą nadpisać. PaperSize i Orientation można importować bezpośrednio z omr.generation.
from omr.generation import GlobalPageSettings, Orientation, PaperSize
settings = GlobalPageSettings()
settings.PaperSize = PaperSize.A4
settings.Orientation = Orientation.VerticalUkład, Przepełnienie i Systemy Pisma
BlockConfig jest obramowanym, wyściełanym pudełkiem; ContainerConfig układa bloki potomne w kolumny lub stopkę; PositionedBlockConfig umieszcza dzieci w absolutnych współrzędnych. LongWordHandling, podklasy OverflowAction (Clip, NoClip, Wrap) oraz systemy pisma Arabic/Hebrew/Persian/Urdu/Bengali wszystkie parsują i walidują poprawnie pod kątem wierności API z powierzchnią Aspose.OMR, ale żaden z nich nie jest jeszcze respektowany przez silnik renderujący tego wydania: zachowanie przepełnienia nie jest jeszcze konfigurowalne, a renderowanie jest wyłącznie LTR/Western. Oba te elementy są śledzone w roadmapie upstream jako niezaimplementowane.
DSL znaczników
Ten sam drzewo elementów może być zapisane jako zwykły tekst i przekazane bezpośrednio do Generate().
from omr.api import OmrEngine
markup = ["?choicebox=Rate it", "(1) Poor (2) Fair (3) Good", "&choicebox"]
engine = OmrEngine()
result = engine.Generate(markup)Wskazówki i najlepsze praktyki
- Ustaw wspólne wartości domyślne raz na
GlobalPageSettings, zamiast powtarzać je w każdym elemencie. - Użyj markup DSL do szybkiej iteracji; przełącz się na drzewo code-first w celu generacji programistycznej.
CompositeGridConfig.ExtraRowdodaje wiodący wiersz niestandardowych symboli bez zmianyColumnsCount.
Typowe problemy
| Problem | Przyczyna | Poprawka |
|---|---|---|
Treść nie jest przycinana nawet przy ustawionym Overflow | Silnik renderujący tej wersji nie obsługuje jeszcze Overflow/LongWordHandling | Jeszcze nie dostępne — śledzone w planie rozwoju upstream |
SaveAsPdf() wywołuje NotImplementedError | Eksport PDF nie jest zaimplementowany w tej wersji | Użyj Save() do wyjścia PNG |
FAQ
Czy mogę mieszać markup DSL i konfiguracje code-first w tym samym szablonie?
Obie są alternatywnymi sposobami budowania tego samego drzewa TemplateConfig; Generate() tej wersji akceptuje zarówno źródło markup, jak i instancję TemplateConfig, ale nie mieszankę w jednym wywołaniu.
Jak działają szablony wielostronicowe?
TemplateConfig.Children zawiera wiele obiektów PageConfig; GenerationResult.MultipageTemplateImages zwraca jeden obraz na stronę.
API Reference Podsumowanie
| Klasa/Metoda | Opis |
|---|---|
TemplateConfig | Katalog główny dokumentu zawierający PageConfig stron |
PageConfig | Jedna fizyczna strona |
ChoiceBoxConfig / CheckBoxConfig / GridConfig / CompositeGridConfig / AnswerSheetConfig | Konfiguracje elementu pytania |
BlockConfig / ContainerConfig / PositionedBlockConfig | Kontenery układu |
GlobalPageSettings | Domyślne ustawienia dokumentu |