Генерация арабского pdf-файла с помощью Django и xhtml2pdf
Я хочу создать арабский PDF-файл, используя Django и библиотеку xhtml2pdf
.
Мой код выглядит следующим образом:
В views.py
class ViewPDF(View):
def get(self, request, *args, **kwargs):
name=أفراد.objects.get(رقم_شخصي="100056").الإسم
data={"name":name}
pdf = render_to_pdf('pdf_template.html', data)
return HttpResponse(pdf, content_type='application/pdf')
def render_to_pdf(template_src, context_dict={}):
template = get_template(template_src)
html = template.render(context_dict)
result = BytesIO()
pdf = pisa.pisaDocument(BytesIO(html.encode("UTF-8")), result)
if not pdf.err:
return HttpResponse(result.getvalue(), content_type='application/pdf')
return pdf
Сначала я использовал xhtml2pdf
API для создания PDF-файла. Сначала я создал метод render_to_pdf
для создания необходимых PDF-файлов. Во-вторых, я вставил нужные данные в шаблон.
Шаблон, который я использую :
{% load static%}
<html dir="rtl">
<pdf:language name="arabic"/>
<head>
<title>ملف الشخصي</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Naskh+Arabic:400,700" rel="stylesheet">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<style>
@page {
size: a4 portrait;
@frame header_frame { /* Static Frame */
-pdf-frame-content: header_content;
left: 50pt; width: 512pt; top: 50pt; height: 40pt;
}
@frame content_frame { /* Content Frame */
left: 50pt; width: 512pt; top: 90pt; height: 632pt;
}
@frame footer_frame { /* Another static Frame */
-pdf-frame-content: footer_content;
left: 50pt; width: 512pt; top: 772pt; height: 20pt;
}
body {
direction:rtl;
}
}
</style>
</head>
<body>
<!-- Content for Static Frame 'header_frame' -->
<div id="header_content">
<h3>ملف الشخصي</h3>
</div>
For arabic it's not working
<!-- Content for Static Frame 'footer_frame' -->
<div id="footer_content">(c) - page <pdf:pagenumber>
of <pdf:pagecount>
</div>
<h3>ملف الشخصي</h3>
{{name}}
</body>
</html>
Я добавил несколько настроек шрифта, но они не изменили и не добавили ничего достойного упоминания.
Результат, который я получаю:
Я пробовал добавлять различные шрифты и добавлять теги стилей. Но ничего не изменилось.