Django + reportlab フォントの指定について

こんにちはHITS代表の原田です。
開業日は2019/07/01に設定したので、現在は日々使用するためのツールを作成しているのですが、その中でお客様に提出するための各種レポートをPDFで作成するためReportLabというライブラリを使用しています。
今回はReportLabでフォントを指定するための方法をご紹介いたします。
。。。といってもHow to set any font in reportlab Canvas in python?の内容なのですけどね。

ReportLabはフォントをTTFSearchPathで定義されている下記のフォルダから取得するらしいのですが、そこにttfファイルが置いていない場合は指定してあげる必要があるのです。

TTFSearchPath = (
            'c:/winnt/fonts',
            'c:/windows/fonts',
            '/usr/lib/X11/fonts/TrueType/',
            '/usr/share/fonts/truetype',
            '/usr/share/fonts',             #Linux, Fedora
            '/usr/share/fonts/dejavu',      #Linux, Fedora
            '%(REPORTLAB_DIR)s/fonts',      #special
            '%(REPORTLAB_DIR)s/../fonts',   #special
            '%(REPORTLAB_DIR)s/../../fonts',#special
            '%(CWD)s/fonts',                #special
            '~/fonts',
            '~/.fonts',
            '%(XDG_DATA_HOME)s/fonts',
            '~/.local/share/fonts',
            #mac os X - from
            #http://developer.apple.com/technotes/tn/tn2024.html
            '~/Library/Fonts',
            '/Library/Fonts',
            '/Network/Library/Fonts',
            '/System/Library/Fonts',
            )

で、指定の方法についてですが、

import reportlab
from django.conf import settings
reportlab.rl_config.TTFSearchPath.append(str(settings.BASE_DIR) + '/app/lib/reportlabs/fonts')
pdfmetrics.registerFont(TTFont('Copperplate', 'Copperplate-Gothic-Bold.ttf'))

という感じで指定できます。
rl_config.TTFSearchPathでTTFSearchPathにパスを登録してあげて使用する。という流れになります。
ちなみに、settings.BASE_DIRはdjangoのsettings.pyで指定されているBASE_DIRのことで、たぶんDefaultだとプロジェクトルートになっていると思います。

日本語の情報が出てこなかったりわかりづらくてイライラしている人の力に少しでもなれたら嬉しいです。
お客様の猫の手になりたいハラダITサポートでした。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です