Django и reportlab не видит шрифты на хостинге
Делаю проект на django. Структура проекта следующая:
testproject
|
testproject...
|
testapp
|
static
| |
| testapp
| |
| fonts
| |
| Tantular.ttf
|
|
...
|
views.py
В views.py я создаю pdf файл с помощью reportlab, при этом добавляю шрифт.
...
def create_pdf(request):
try:
response = HttpResponse(content_type='application/pdf', )
...
pdfmetrics.registerFont(TTFont('TNR', 'testapp/static/testapp/fonts/Tantular.ttf'))
pdfmetrics.registerFont(TTFont('TimesNewRoman', 'Times New Roman.ttf'))
styles.add(ParagraphStyle(name='Center', alignment=TA_CENTER, fontName='TNR', ))
...
except:
...
return response
Если запускаю файл локально все работает, причем не важно использую ли я шрифт Times New Roman или Tantular. После того как развернул файл на хостинге, выдаёт ошибку:
TTFError('Can\'t open file "testapp/static/testapp/fonts/Tantular.ttf"'), <class 'reportlab.pdfbase.ttfonts.TTFError'>
Я думаю, что проблема в указании пути к шрифту, а как правильно указать я не знаю.
Все оказалось гораздо проще чем я думал
Добавил во views.py
from os import path
В функцию создания добавил пару строк по определению правильного пути до шрифта.
...
def create_pdf(request):
try:
response = HttpResponse(content_type='application/pdf', )
...
app_path = path.realpath(path.dirname(__file__))
font_path = path.join(app_path, 'static/testapp/fonts/Tantular.ttf')
pdfmetrics.registerFont(TTFont('TNR', font_path))
styles.add(ParagraphStyle(name='Center', alignment=TA_CENTER, fontName='TNR', ))
...
except:
...
return response