TEI/XMLファイルを縦書きPDFに変換する方法について、その1例を備忘録として残します。
以下のノートブックで、「校異源氏物語」を対象としたプログラムをお試しいただけます。
https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/TEI_XMLファイルを縦書きPDFに変換する.ipynb
変換の流れ#
今回は、Quartoを使用しています。
https://quarto.org/
インストールの方法は以下を参考にしてください。
https://quarto.org/docs/get-started/
TEI/XML -> qmd#
まずTEI/XMLファイルの内容をqmdファイルに変換します。以下は、変換スクリプトのサンプルです。
以下がqmdファイルの例です。
qmd -> Word(docx)#
次に、qmdファイルをwordファイルに変換します。この時、事前に用意した縦書きのwordテンプレートを参照することで、マークダウン形式のテキストを縦書きのwordファイルに変換します。
こちらについては、以下の記事が参考になります。
https://www.infoworld.com/article/3671668/how-to-create-word-docs-from-r-or-python-with-quarto.html#toc-4
https://quarto.org/docs/output-formats/ms-word-templates.html
結果、以下のようなwordファイルが作成されます。

Word(docx) -> PDF#
最後に、wordファイルをpdfに変換します。手動による変換に加えて、以下のライブラリによる自動変換も可能です。
https://pypi.org/project/docx2pdf/
これにより、TEI/XMLをPDFファイルに機械的に変換することができます。

まとめ#
他にもより効率的な変換方法があるかと思います。変換方法を検討する際の一例として参考になりましたら幸いです。
また本フローは、qmdファイルを経由することにより、レイアウト等に一部制約が加わることが課題として挙げられます。以下のpython-docxのようなライブラリを使って、TEI/XMLからwordファイルを直接作成する方法も有効かと思います。
https://pypi.org/project/python-docx/
もちろんxsltを使った変換も有効です。他にも色々な方法がありますので、引き続き検討したいと思います。
なお、epubに変換する方法の一例も以下に記載しています。参考になりましたら幸いです。