Como Trabalhar com Geração em Python
Aspose.OMR FOSS para Python cria um formulário OMR a partir de uma árvore de configurações de elementos com raiz em TemplateConfig, então o renderiza para uma imagem de página e descritor .omr com OmrEngine.Generate(). Este guia demonstra como construir um modelo simples de folha de respostas e gerá-lo.
Guia passo a passo
Etapa 1: Instalar o pacote
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.')"Etapa 2: Importar classes necessárias
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 AnswerSheetConfigEtapa 3: Construir a árvore de modelo
Crie uma raiz TemplateConfig, um PageConfig para a página única e um AnswerSheetConfig para uma matriz de respostas numerada de 20 perguntas (4 bolhas de opção por pergunta).
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]Etapa 4: Gerar e Salvar
engine = OmrEngine()
gen = engine.Generate(tpl)
gen.Save("out", "quiz") # -> out/quiz.png + out/quiz.omrProblemas Comuns e Soluções
Minha página gerada parece vazia. Verifique se cada elemento está realmente adicionado ao pai Children lista — um elemento construído mas nunca anexado à página (ou ao contêiner) Children nunca é renderizado.
Preciso de um PDF em vez de um PNG. Não disponível nesta versão — GenerationResult.SaveAsPdf() raises NotImplementedError. Use a saída PNG de Save() e converta externamente se um PDF for necessário.
Eu defini Overflow e nada mudou. O motor de renderização desta versão ainda não honra Overflow/LongWordHandling — os enums analisam e validam corretamente, mas o comportamento de overflow ainda não é configurável. Isso está rastreado no roadmap upstream.
Perguntas Frequentes
Posso criar o mesmo modelo sem objetos Python?
Sim — a DSL de marcação constrói a mesma árvore de elementos a partir de texto simples, passado diretamente para OmrEngine.Generate().
Como gero um modelo de várias páginas?
Adicione mais de um PageConfig a TemplateConfig.Children; GenerationResult.MultipageTemplateImages retorna uma imagem por página.
O engine mantém estado entre chamadas de Generate()?
Não — OmrEngine é sem estado; cada chamada é independente.