如何在 Python 中使用 Generation

如何在 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 是无状态的;每次调用都是独立的。

另请参阅

 中文