WeasyPrintを用いていろいろと作業する機会があった。そこでWeasyPrint関連の作業をEmacs上でしやすくする試みを行う。

WeasyPrint

WeasyPrintはHTML、CSS、画像といったWebの技術でレアウトし、それらを元にしてPDFを生成する。 Pythonで実装されておりインターフェースとしてPython用のAPIとCLIツールとしてのweasyprintコマンドを提供している。

デモ

WeasyPrintで変換可能なファイルの状態で M-x weasyprint RET を実行すると、 PDFが生成され結果がEmacsのバッファに表示される。

https://res.cloudinary.com/symdon/image/upload/v1654273623/blog.symdon.info/1654271418/demo_lq834t.gif

仕組み

WeasyPrintは、PythonのWebシステムに組み込む場合、Python用のAPIを用いることが多いだろう。 今回はEmacsに組み込むため、weasyprintコマンドを利用した。 weasyprint 関数は make-process を用いて weasyprint コマンドを呼び出す。 weasyprint コマンドは記述されたファイルに従いPDFを出力する。 PDFの出力先は標準出力となっており、その出力を出力用バッファに書き出す。

https://res.cloudinary.com/symdon/image/upload/v1654274790/blog.symdon.info/1654271418/diag_h8gmlb.png