如何在 Python 中使用 Generation
Aspose.OMR FOSS for Python 从以 TemplateConfig 为根的元素配置树构建 OMR 表单,然后使用 OmrEngine.Generate() 将其渲染为页面图像和 .omr 描述符。本指南将演示如何构建一个简单的答卷模板并生成它。
分步指南
步骤 1:安装软件包
git clone https://github.com/aspose-omr-foss/Aspose.OMR-FOSS-for-Python.git
cd Aspose.OMR-FOSS-for-Python
pip install -e .python -c "import omr; print('Aspose.OMR FOSS for Python is ready.')"步骤 2:导入所需类
from omr.api import OmrEngine
from omr.generation.config import TemplateConfig
from omr.generation.config.elements.parents import PageConfig
from omr.generation.config.elements import AnswerSheetConfig步骤 3:构建模板树
创建一个 TemplateConfig 根,一个用于单页的 PageConfig,以及一个用于 20 道题的编号答案矩阵的 AnswerSheetConfig(每题 4 个选项气泡)。
tpl = TemplateConfig()
tpl.Name = "quiz"
page = PageConfig()
sheet = AnswerSheetConfig()
sheet.Name = "answers"
sheet.AnswersCount = 4 # bubbles per question (e.g. A-D)
sheet.ElementsCount = 20 # number of questions
page.Children = [sheet]
tpl.Children = [page]步骤 4:生成并保存
engine = OmrEngine()
gen = engine.Generate(tpl)
gen.Save("out", "quiz") # -> out/quiz.png + out/quiz.omr常见问题与解决方案
我的生成页面看起来是空的。 检查每个元素是否真的已添加到父级的 Children 列表——一个已构造但从未追加到页面(或容器)的元素 Children 永远不会被渲染。
我需要 PDF 而不是 PNG。 此版本中不可用—— GenerationResult.SaveAsPdf() raises NotImplementedError. 使用 PNG 输出自 Save() 如果需要 PDF,请在外部转换。
我设置 Overflow 但没有任何变化。 此版本的渲染引擎尚未支持 Overflow/LongWordHandling — 枚举能够正确解析和验证,但溢出行为尚未可配置。此情况已在上游路线图中跟踪。
常见问题
我可以在没有 Python 对象的情况下构建相同的模板吗?
是的——标记 DSL 从纯文本构建相同的元素树,直接传递给 OmrEngine.Generate()。
我该如何生成多页模板?
向 TemplateConfig.Children 添加多个 PageConfig;GenerationResult.MultipageTemplateImages 每页返回一张图像。
引擎在 Generate() 调用之间会保持状态吗?
不——OmrEngine 是无状态的;每次调用都是独立的。