Generation
Generation
Üretim katmanı (omr.generation) bir şablon — öğe yapılandırmalarının bir ağacı — oluşturur ve bunu bir sayfa görüntüsü ile bir .omr tanımlayıcısı olarak OmrEngine.Generate() aracılığıyla işler.
Şablon Ağacı
TemplateConfig, belge kökü olup, bir veya daha fazla PageConfig nesnesi içerir. Bir sayfanın altındaki her öğe, BaseConfig sınıfının bir alt sınıfıdır ve bir Name ile bir Type ayırıcı (ConfigType) taşır.
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]Soru Öğeleri
ChoiceBoxConfig— sabit bir seçenek balonu kümesine (ChoiceBoxAnswerConfig) sahip bir soru, çoklu seçim ve soru bazlı doğrulamayı destekler.AnswerSheetConfig— sınav tarzı kağıtlar için numaralı yanıt balonu matrisidir.CheckBoxConfig— herhangi bir işareti kabul eden boş kutulardan oluşan etiketli bir grup, ayarlanabilir doluluk eşiği ile.GridConfig/CompositeGridConfig— bir değere birleştirilen rakam veya özel-simge matrisleri.
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 questionsSayfa Genelinde Ayarlar
GlobalPageSettings belge genelinde varsayılanları (kağıt boyutu, yönelim, yazı tipi, balon boyutu) ayarlar; bireysel öğeler bunları geçersiz kılabilir. PaperSize ve Orientation, omr.generation üzerinden doğrudan içe aktarılabilir.
from omr.generation import GlobalPageSettings, Orientation, PaperSize
settings = GlobalPageSettings()
settings.PaperSize = PaperSize.A4
settings.Orientation = Orientation.VerticalDüzen, Taşma ve Yazı Sistemleri
BlockConfig sınırlı, doldurulmuş bir kutudur; ContainerConfig alt blokları sütunlara veya bir alt bilgiye düzenler; PositionedBlockConfig çocukları mutlak koordinatlarda konumlandırır. LongWordHandling, OverflowAction alt sınıfları (Clip, NoClip, Wrap) ve Arabic/Hebrew/Persian/Urdu/Bengali yazı sistemleri, Aspose.OMR yüzeyiyle API doğruluğu için doğru bir şekilde ayrıştırılır ve doğrulanır, ancak bunların hiçbiri bu sürümün render motoru tarafından henüz desteklenmiyor: taşma davranışı henüz yapılandırılamıyor ve render yalnızca LTR/Western şeklindedir. İkisi de üst akış yol haritasında henüz uygulanmamış olarak izleniyor.
İşaretleme DSL
Aynı öğe ağacı düz metin olarak yazılabilir ve doğrudan Generate()‘a iletilebilir.
from omr.api import OmrEngine
markup = ["?choicebox=Rate it", "(1) Poor (2) Fair (3) Good", "&choicebox"]
engine = OmrEngine()
result = engine.Generate(markup)İpuçları ve En İyi Uygulamalar
- Ortak varsayılanları
GlobalPageSettingsüzerinde bir kez ayarlayın, her öğede tekrarlamak yerine. - Hızlı yineleme için markup DSL’yi kullanın; programatik üretim için kod-öncelikli ağaca geçin.
CompositeGridConfig.ExtraRow,ColumnsCount‘i değiştirmeden özel sembollerin ön satırını ekler.
Yaygın Sorunlar
| Sorun | Neden | Çözüm |
|---|---|---|
İçerik, Overflow ayarlı olsa bile kırpılmıyor | Bu sürümün render motoru henüz Overflow/LongWordHandling değerine saygı göstermiyor | Henüz mevcut değil — üst akış yol haritasında izleniyor |
SaveAsPdf(), NotImplementedError hatasını fırlatır | PDF dışa aktarımı bu sürümde uygulanmadı | PNG çıktısı için Save() kullanın |
FAQ
Markup DSL ile kod-öncelikli yapılandırmaları aynı şablonda karıştırabilir miyim?
İkisi de aynı TemplateConfig ağacını oluşturmanın alternatif yollarıdır; bu sürümün Generate()‘i bir markup kaynağını ya da bir TemplateConfig örneğini kabul eder, tek bir çağrıda karışımı değil.
Çok sayfalı şablonlar nasıl çalışır?
TemplateConfig.Children birden fazla PageConfig nesnesi tutar; GenerationResult.MultipageTemplateImages sayfa başına bir görüntü döndürür.
API Reference Özeti
| Sınıf/Yöntem | Açıklama |
|---|---|
TemplateConfig | Belge kökü, PageConfig sayfalarını içerir |
PageConfig | Bir fiziksel sayfa |
ChoiceBoxConfig / CheckBoxConfig / GridConfig / CompositeGridConfig / AnswerSheetConfig | Soru öğesi yapılandırmaları |
BlockConfig / ContainerConfig / PositionedBlockConfig | Düzen kapsayıcıları |
GlobalPageSettings | Belge genelindeki varsayılanlar |