我可以在创建后指定或获取 Abjad (v3.2) 输出 PDF 文件的路径或名称吗?

问题描述

我有一个使用 abjad v3.2 生成音乐 PDF 的 Flask 服务器。

使用 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 3.2 中,您可以使用 abjad.persist 手动设置 Abjad 生成的 .ly.pdf 文件的输出路径(而不是让 Abjad 在默认文件夹中创建它们) ~/.abjad/output).

要使用它,首先创建一个 lilypond_file 变量来实例化 abjad.LilyPondFile,然后将其用作 abjad.persist.as_pdf(lilypond_file,'/path/to/file.pdf')。在上面的最小示例中,这变为:

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)

# save pdf file at a custom location
abjad.persist.as_pdf(lilypond_file,'/path/to/file.pdf')