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 | ברירות מחדל לכל המסמך |