Generation
Generation
Lapisan generasi (omr.generation) membangun sebuah templat — sebuah pohon konfigurasi elemen — dan merendernya menjadi gambar halaman plus deskriptor .omr melalui OmrEngine.Generate().
Pohon Templat
TemplateConfig adalah akar dokumen, berisi satu atau lebih objek PageConfig. Setiap elemen di bawah sebuah halaman adalah subkelas dari BaseConfig, membawa sebuah Name dan sebuah diskriminator 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]Elemen Pertanyaan
ChoiceBoxConfig— sebuah pertanyaan dengan sekumpulan gelembung opsi tetap (ChoiceBoxAnswerConfig), mendukung multi-select dan validasi per-pertanyaan.AnswerSheetConfig— sebuah matriks gelembung jawaban bernomor untuk lembar bergaya ujian.CheckBoxConfig— sebuah grup berlabel dari kotak kosong yang menerima sembarang tanda, dengan ambang pengisian yang dapat disetel.GridConfig/CompositeGridConfig— matriks digit atau simbol khusus yang digabung menjadi satu nilai.
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 questionsPengaturan Seluruh Halaman
GlobalPageSettings menetapkan default seluruh dokumen (ukuran kertas, orientasi, font, ukuran gelembung) yang dapat ditimpa oleh elemen individual. PaperSize dan Orientation dapat diimpor langsung dari omr.generation.
from omr.generation import GlobalPageSettings, Orientation, PaperSize
settings = GlobalPageSettings()
settings.PaperSize = PaperSize.A4
settings.Orientation = Orientation.VerticalTata Letak, Overflow, dan Sistem Penulisan
BlockConfig adalah kotak berbingkai dan berpadding; ContainerConfig menyusun blok anak menjadi kolom atau footer; PositionedBlockConfig menempatkan anak pada koordinat absolut. LongWordHandling, kelas turunan OverflowAction (Clip, NoClip, Wrap), serta sistem penulisan Arabic/Hebrew/Persian/Urdu/Bengali semuanya dapat mengurai dan memvalidasi dengan benar untuk kesetiaan API dengan permukaan Aspose.OMR, namun belum ada yang dihormati oleh mesin render rilis ini: perilaku overflow belum dapat dikonfigurasi, dan rendering hanya LTR/Barat. Keduanya tercatat di roadmap hulu sebagai belum diimplementasikan.
DSL Markup
Pohon elemen yang sama dapat ditulis sebagai teks biasa dan diteruskan langsung ke Generate().
from omr.api import OmrEngine
markup = ["?choicebox=Rate it", "(1) Poor (2) Fair (3) Good", "&choicebox"]
engine = OmrEngine()
result = engine.Generate(markup)Tips dan Praktik Terbaik
- Tetapkan nilai default bersama sekali pada
GlobalPageSettingsdaripada mengulanginya pada setiap elemen. - Gunakan markup DSL untuk iterasi cepat; beralih ke pohon code-first untuk pembuatan secara programatik.
CompositeGridConfig.ExtraRowmenambahkan baris terdepan simbol khusus tanpa mengubahColumnsCount.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
Konten tidak terpotong meskipun Overflow diatur | Mesin render rilis ini belum menghormati Overflow/LongWordHandling | Belum tersedia — dilacak pada roadmap upstream |
SaveAsPdf() memunculkan NotImplementedError | Ekspor PDF belum diimplementasikan dalam rilis ini | Gunakan Save() untuk output PNG |
FAQ
Apakah saya dapat mencampur markup DSL dan konfigurasi code-first dalam templat yang sama?
Keduanya adalah cara alternatif untuk membangun pohon TemplateConfig yang sama; Generate() pada rilis ini menerima sumber markup atau instance TemplateConfig, bukan campuran dalam satu panggilan.
Bagaimana cara kerja template multi-halaman?
TemplateConfig.Children menyimpan banyak objek PageConfig; GenerationResult.MultipageTemplateImages mengembalikan satu gambar per halaman.
API Reference Ringkasan
| Kelas/Metode | Deskripsi |
|---|---|
TemplateConfig | Root dokumen yang berisi halaman PageConfig |
PageConfig | Satu halaman fisik |
ChoiceBoxConfig / CheckBoxConfig / GridConfig / CompositeGridConfig / AnswerSheetConfig | Konfigurasi elemen pertanyaan |
BlockConfig / ContainerConfig / PositionedBlockConfig | Kontainer tata letak |
GlobalPageSettings | Default seluruh dokumen |