2015-11-30 2 views
1

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

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

PDF сгенерированных на Ubuntu: PDF generated on Ubuntu

PDF генерируется на OS X: PDF generated on OS X

HTML версия HTML version

PDF имеет различные шрифты но когда я открываю HTML-версию в браузере, он делает то же самое, когда размещается на U buntu и 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 и как заставить его использовать шрифт, который я хочу?

ответ

3

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

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

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

+0

Да, я думал, что Arial является основным шрифтом и доступен везде, но оказывается, что он недоступен на Ubuntu. Поэтому я устанавливаю arial на ununtu, и все в порядке. –