【发布时间】:2021-06-09 22:23:57
【问题描述】:
我有一个使用 abjad v3.2 生成音乐 PDF 的烧瓶服务器。
使用abjad.show() 后,我想获取创建文件的路径。
我可以使用abjad.Configuration().abjad_output_directory 获取输出目录,但不能使用我创建的特定文件。
我的问题是如何获取我刚刚创建的文件(不是文件夹,而是特定文件)的路径,以便将其发送回用户?
我创建 PDF 文件的 python 代码:
staff = abjad.Staff(abjad_notes)
# attach BPM to notes file
metronome_mark = abjad.MetronomeMark((1, 4), bpm)
abjad.attach(metronome_mark, staff[0])
# creates lilypond file object
lilypond_file = abjad.LilyPondFile.new(staff)
# notes title
lilypond_file.header_block.title = abjad.Markup(title)
# show PDF on screen
abjad.show(lilypond_file)
【问题讨论】:
-
不知道对你有没有帮助,但是你可以使用
abjad.PersistenceManager手动设置Abjad生成的.ly和.pdf文件的输出路径(相对让 Abjad 在文件夹~/.abjad/output中创建它们。下面是一个如何使用它的示例:创建lilypond_file变量后,将其用作abjad.PersistenceManager(lilypond_file).as_pdf('~/output_score.pdf')。如果这有帮助,请告诉我,我可以将其写为正确答案而不是评论。 -
@gilbertohasnofb 成功了,非常感谢。但我确实有一些要补充的。您的代码适用于 abjad 3.0。在 v3.2 中,它应该像
abjad.persist.as_pdf(lilypond_file, "/path/to/file.pdf")。它帮助了我并满足了我的需求,感激不尽! -
是的,不幸的是,Abjad 的向后兼容性往往很差,他们不断重命名函数和类,所以总是很棘手。我还没有从 3.1 升级,因为我目前正在进行一些项目。我现在将创建一个反映这些事情的答案。
标签: python pdf flask metadata lilypond