Пользовательские шрифты "не могут быть загружены" при рендеринге PDF с помощью weasyprint в приложении Django
У меня проблемы с тем, чтобы заставить weasyprint использовать пользовательские шрифты для создания PDF. Я думаю, что это связано с взаимодействием между параметром weasyprint base_url
и моими статическими файлами, но я пытаюсь решить эту проблему.
При генерации PDF я получаю следующую ошибку:
fonts/add_font_face - Font-face 'Playfair Display' cannot be loaded
Мои файлы шрифтов находятся в static/fonts
в моем приложении "галерея":
- project
- manage.py
- ...
- gallery
- static
- files
- views.py
- url.py
- ...
Я создаю свой pdf с помощью следующей команды:
base_url = request.build_absolute_uri("/")
HTML(string=template, base_url=base_url).write_pdf(output)
В моем шаблоне используется блок <style>
со следующими определениями font-face, в идеале с использованием тега Django static
:
@font-face {
font-family: 'Playfair Display';
font-weight: normal;
src: url({% static 'fonts/PlayfairDisplay-Regular.ttf' %}) format("truetype");
}
Предложения по решению этой проблемы?
Я включил "отладочную" регистрацию для weasyprint и увидел, что шрифты не загружаются из-за следующей ошибки SSL:
URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:997)>
Ранее я включил SSL для этого проекта, но теперь в нем нет необходимости. Отключение всех SSL в проекте решило эту проблему.
Теперь шрифты будут загружаться корректно:
@font-face {
font-family: 'Playfair Display';
font-weight: normal;
src: url({% static 'fonts/PlayfairDisplay-Regular.ttf' %}) format("truetype");
}