pdfkit использует разные шрифты при рендеринге PDF документа в OS X и Ubuntu

Я использую pdfkit для генерации PDF документа со страницы HTML. Проблема в том, что он использует разные шрифты на моей машине разработки (OS X) и производственном сервере (Ubuntu), поэтому я не могу получить согласованный рендеринг в среде разработки и производства.

Посмотрите на эти скриншоты:

PDF, созданный в Ubuntu: PDF, созданный в Ubuntu

PDF, созданный в OS X: PDF сгенерированный на OS X

HTML версия HTML версия

PDF имеет разные шрифты, но когда я открываю HTML-версию в браузере, он отображается точно так же, когда размещается на сервере Ubuntu и OS X локально, и использует тот же шрифт, что и локально (OS X), сгенерированный PDF.

Вот код, который я использую для генерации HTML и PDF версии (это Django).

t = loader.get_template(self.template_name)
c = RequestContext(request, context)
html = t.render(c)

if format == "html":
    return HttpResponse(html, content_type="text/html")
elif format == "pdf":
    options = {
        'quiet': ''
    }
    pdf = pdfkit.from_string(smart_unicode(html), False, options=options)

    response = HttpResponse(pdf, content_type='application/pdf')
    response['Content-Disposition'] = '{0}; filename=Order Sheet.pdf'\
        .format(self.get_disposition())
    return response
else:
    return HttpResponse("Unknown format", content_type="text/html")

и это определение шрифта CSS

body {
    font-family: sans-serif;
    font-size: 13px;
    font-weight: normal;
}

Я старался Arial также.

Почему pdfkit (wkhtmltopdf) использует разные шрифты в Ubuntu и как заставить его использовать нужный мне шрифт?

1 ответ

Решение

OSX использует Helvetica в качестве шрифта по умолчанию без засечек, а для Ubuntu по умолчанию используется DejaVu Sans. Я бы порекомендовал использовать тот, который является общим для сред.

Вы можете установить Helvetica на свой компьютер с Ubuntu, а затем изменить font-family: "Helvetica", sans-serif;,

В идеале я хотел бы изучить шрифт, который доступен в обеих средах, а затем указать его в вызове семейства шрифтов.

Другие вопросы по тегам