Generation

Generation

שכבת הייצור (omr.generation) בונה תבנית — עץ של תצורות אלמנטים — וממירה אותה לתמונת עמוד בתוספת מתאר .omr דרך OmrEngine.Generate().


עץ התבנית

TemplateConfig הוא שורש המסמך, המכיל אחד או יותר של עצמים PageConfig. כל אלמנט מתחת לעמוד הוא תת-מחלקה של BaseConfig, נושא Name ו-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]

אלמנטים של שאלה

  • ChoiceBoxConfig — שאלה עם סט קבוע של בועות אפשרות (ChoiceBoxAnswerConfig), תומכת בבחירה מרובה ובאימות לכל שאלה.
  • AnswerSheetConfig — מטריצה ממוספרת של בועות תשובה לגיליונות בסגנון מבחן.
  • CheckBoxConfig — קבוצה מתויגת של תיבות ריקות המקבלת כל סימן, עם סף מילוי שניתן לכוונן.
  • GridConfig / CompositeGridConfig — מטריצות של ספרות או סמלים מותאמים הממוזגות לערך יחיד.
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

הגדרות לכל העמוד

GlobalPageSettings מגדיר ערכי ברירת מחדל לכל המסמך (גודל נייר, כיווניות, גופן, גודל בועה) שאפשר לדרוס על ידי אלמנטים בודדים. PaperSize ו-Orientation ניתנים לייבוא ישירות מ-omr.generation.

from omr.generation import GlobalPageSettings, Orientation, PaperSize

settings = GlobalPageSettings()
settings.PaperSize = PaperSize.A4
settings.Orientation = Orientation.Vertical

פריסה, גלישה ומערכות כתיבה

BlockConfig הוא קופסה בעלת גבול וריפוד; ContainerConfig מסדרת בלוקי-בן לתורים או לתחתית; PositionedBlockConfig מציב את הילדים בקואורדינטים מוחלטים. LongWordHandling, תתי-המחלקה של OverflowAction (Clip, NoClip, Wrap), ומערכות הכתיבה Arabic/Hebrew/Persian/Urdu/Bengali כולן מנתחות ומוודאות נכונה עבור אמינות API עם משטח Aspose.OMR, אך אף אחת מהן עדיין לא מכובדת על ידי מנוע ההדמיה של גרסה זו: התנהגות גלישה עדיין אינה ניתנת להגדרה, וההדמיה היא רק LTR/מערבית. שניהם מתועדים במפת הדרכים של המקור כלא מיושמים עדיין.

DSL הסימון

ניתן לכתוב את עץ האלמנטים הזה כטקסט פשוט ולהעבירו ישירות ל-Generate().

from omr.api import OmrEngine

markup = ["?choicebox=Rate it", "(1) Poor (2) Fair (3) Good", "&choicebox"]
engine = OmrEngine()
result = engine.Generate(markup)

טיפים ושיטות עבודה מומלצות

  • הגדר ברירות מחדל משותפות פעם אחת ב-GlobalPageSettings במקום לחזור עליהן בכל אלמנט.
  • השתמש ב-DSL של סימון לאיטרציה מהירה; עבור לעץ קוד-ראשוני ליצירה פרוגרמטית.
  • CompositeGridConfig.ExtraRow מוסיף שורה מובילה של סמלים מותאמים ללא שינוי ColumnsCount.

בעיות נפוצות

בעיהסיבהתיקון
התוכן אינו נחתך אפילו עם Overflow מוגדרמנוע הרינדור של גרסה זו עדיין אינו מכבד את Overflow/LongWordHandlingעדיין לא זמין — מתועד במפת הדרך של המקור
SaveAsPdf() מעלה NotImplementedErrorייצוא PDF אינו מיושם בגרסה זוהשתמש ב-Save() עבור פלט PNG

FAQ

האם ניתן לשלב את ה-DSL של הסימון והקונפיגורציות קוד-ראשוניות באותו תבנית?

שניהם דרכים חלופיות לבנות את אותו עץ TemplateConfig; ה-Generate() של גרסה זו מקבל או מקור סימון או מופע TemplateConfig, ולא שילוב של שניהם בקריאה אחת.

איך תבניות מרובות-דפים פועלות?

TemplateConfig.Children מכיל מספר רב של אובייקטי PageConfig; GenerationResult.MultipageTemplateImages מחזיר תמונה אחת לכל דף.


API Reference סיכום

מחלקה/מתודהתיאור
TemplateConfigשורש המסמך המכיל PageConfig דפים
PageConfigדף פיזי אחד
ChoiceBoxConfig / CheckBoxConfig / GridConfig / CompositeGridConfig / AnswerSheetConfigהגדרות רכיב שאלה
BlockConfig / ContainerConfig / PositionedBlockConfigמכולות פריסה
GlobalPageSettingsברירות מחדל לכל המסמך

ראה גם

 עברית