概要

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ファイルに変換します。以下は、変換スクリプトのサンプルです。

fseiitaetfoottaf{"wrolmdiuleopseiuot"iouepttexra.xttre"tmpmo=lhmttmtlhmxhereoeeiihaeoadtfb=ntorn=ffk=:rto.o.sts=ti=e::cspw4Bso.=s"needf"xteresps".t.tfi"{":rrniia=aos=enene"r"t{ei(tmutuolaxaxds"iafpoeptshpusemtmta(-tue(p(oio..pomeeto-ltr)atrfusf.ue++as-ehe}tetuppifpn====/.}onhxl.lni.t=={p"rc,tBSfidnfs"eia}e)eoit(di:"\".dt"-"aune"(npnst}hdwupdxt"db"ee..o"t(Ctia("gxqdc)ioh(tu":"tmi:fpioltb:drauelseho+"n/slnd."odacS(rp)ry"mofofea.""en:uintt))(tpl(he..\oeet.xtfnpn,ebtei"at'xaxnt/rtstdhk'=e()o)Tn",u,rapium"eg"ee)xex,(.inmffsjlriiti"eln_m)cedoou)Cknr)h=os[iTgi0lrav]duterea=e)rTnir(/u)teo)ols/genji-doc-style.docx

以下がqmdファイルの例です。

tafiuottrlhmeoad:rto::c"x":refer"ence-d"oc:/content/kouigenjimonogatari/tools/genji-doc-style.docx

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に変換する方法の一例も以下に記載しています。参考になりましたら幸いです。