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 questions

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

Ukł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.ExtraRow dodaje wiodący wiersz niestandardowych symboli bez zmiany ColumnsCount.

Typowe problemy

ProblemPrzyczynaPoprawka
Treść nie jest przycinana nawet przy ustawionym OverflowSilnik renderujący tej wersji nie obsługuje jeszcze Overflow/LongWordHandlingJeszcze nie dostępne — śledzone w planie rozwoju upstream
SaveAsPdf() wywołuje NotImplementedErrorEksport PDF nie jest zaimplementowany w tej wersjiUż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/MetodaOpis
TemplateConfigKatalog główny dokumentu zawierający PageConfig stron
PageConfigJedna fizyczna strona
ChoiceBoxConfig / CheckBoxConfig / GridConfig / CompositeGridConfig / AnswerSheetConfigKonfiguracje elementu pytania
BlockConfig / ContainerConfig / PositionedBlockConfigKontenery układu
GlobalPageSettingsDomyślne ustawienia dokumentu

Zobacz także

 Polski