Xhtml2pdf шрифты для латинских символов для рендеринга шаблона pdf

Я делаю динамический рендеринг шаблона pdf с помощью библиотеки xhtml2pdf в Django. Проблема заключается в смягчении знаков, таких как ā, š, ķ и т.д. Я пытался использовать все предложенные шрифты из документации. Я могу получить шрифты, но не эти смягченные символы. это выглядит как preview of pdf

from django.template.loader import get_template
from xhtml2pdf import pisa
from io import BytesIO

def quote_preview_pdf(request, pk, pk2): 
    # subscription = stripeInfo(request)
    user = request.user
    user_company = UserCompany.objects.get(company_user=user)
    client_company = user.clientcompanies_set.get(id=pk)
    quote_nr = user_company.quotenumber_set.get(id=pk2)

    quote_nr = user_company.quotenumber_set.get(id=pk2)
    get_quoted_products = CompaniesQuote.objects.filter(quote_nr = quote_nr)
    get_only_quoted_products = CompaniesQuote.objects.filter(quote_nr = 
        quote_nr).values_list('item__id', flat=True)

    calc_totals = get_only_quoted_products.annotate(
    calc_total_profit=(F('item__selling_price') * (1 - (F('discount') / 100)) * F('quantity')) 
        - (F('item__buying_price') * F('quantity')),
    calc_total_sales_price = (F('item__selling_price') * F('quantity')),
    calc_total_sales_price_disc = (F('item__selling_price') * (1 - (F('discount') / 100)) * 
        F('quantity')),
    calc_total_sales_price_vat = (F('item__selling_price') * ( 1 + (F('item__vat') / 100)) * 
        F('quantity')),
    calc_total_sales_price_vat_disc = (F('item__selling_price')* (1 - (F('discount') / 100)) * 
        ( 1 + (F('item__vat') / 100)) * F('quantity')),
    calc_total_vat = (F('item__selling_price')* (1 - (F('discount') / 100)) * ( 1 + 
        (F('item__vat') / 100)) * F('quantity')) - (F('item__selling_price') * (1 - 
        (F('discount') / 100)) * F('quantity'))
    ).aggregate(
        thesum=Sum('calc_total_profit'),
        sumsalles=Sum('calc_total_sales_price'),
        sumsallesdiscount=Sum('calc_total_sales_price_disc'),
        sumsallesvat=Sum('calc_total_sales_price_vat'),
        sumsallesvatdiscount=Sum('calc_total_sales_price_vat_disc'),
        sumvattotal = Sum('calc_total_vat'),
        )

    template_path = 'quote_preview_pdf.html'
    context = {
        'user_company': user_company,
        'client_company': client_company,
        'quote_nr':quote_nr,
        'get_quoted_products':get_quoted_products,
        'calc_totals':calc_totals,
        }
    # Create a Django response object, and specify content_type as pdf
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'filename="quote.pdf"'
    # response['Content-Transfer-Encoding'] = 'binary'
    # response['Content-Disposition'] = 'attachment; filename="quote.pdf"'
    # find the template and render it.
    template = get_template(template_path)
    html = template.render(context)

    pisa.pisaDocument(
        src=BytesIO(html.encode('UTF-8')),
        dest=response,
        encoding='UTF-8'
    )

    # create a pdf
    pisa_status = pisa.CreatePDF(
    html, dest=response)

    # if error then show some funy view
    if pisa_status.err:
        return HttpResponse('We had some errors <pre>' + html + '</pre>')
return response

Для меня это выглядит так, как будто он не кодирует UTF-8, потому что он меняет шрифт. Я пробовал играть с @font-face, но безуспешно.

Вот мой CSS для pdf

body {
    font-family: 'Times New Roman';
    }

@page{
    size: letter portrait;
    margin: 2cm;
}

Похоже, что эта проблема возникает уже давно, но не удалось найти ее решение.

Вернуться на верх