te-touのブログ

音楽制作・車・プログラミング・旅行・その他考えてる事など、備忘録的なことも含めて個人的なページです。

【日本語対応】M1 Mac Book Proと Docker Django Postgresql でweasyprint使ってPDF出力



 



 

結論

日本語フォントが出力されない。
の答えは「dockerに日本語フォントが入っていなかったから」でした。
www.te-tou.tokyo

こんなの当然。という人にとっては当然でしょうが、薄っぺらい知識でやってると物凄くハマります。

日本語対応 出力結果
対応方法

とりあえず、PDFエクスポートする際に日本語フォントがないから文字化けてたのでgoogleフォント読み込ませてみます。
↓このフォント使ってみます。
fonts.google.com

HTMLファイルの方にgoogleフォントimportします。
(CSSファイル作るべきなんですが、HTMLにstyleを直書きしてるので)

<style>
    @import url('https://fonts.googleapis.com/css2?family=M+PLUS+1p&display=swap'); 
...省略
</style>

CSS無知っぷりを発揮してます。

そして、views.pyにフォント指定します。

...省略
stylesheets=[
    CSS(string='body { font-family: "M PLUS 1p", sans-serif; !important }'),
]
...省略

そして、出力結果が上記画像です。
フォントをネットで読み込む方式なんで、エクスポートにちょっと時間がかかってしまいますね。
dockerfileにgoogleフォントのインストールを書き込んでリビルドで取り込むのも良いのですが、まあこれで要件を満たせたので満足です。
しかし、CSS知識が乏しすぎて造りが悪いすね。



 



 

www.youtube.com

www.facebook.com