Pdfkit在OS X和Ubuntu上渲染PDF文档时使用不同的字体。

3
我使用pdfkit从HTML页面生成PDF文档。问题在于它在我的开发机(OS X)和生产服务器(Ubuntu)上使用不同的字体,因此无法在开发和生产环境中获得一致的渲染效果。
看一下这些屏幕截图:
在Ubuntu上生成的PDF: PDF generated on Ubuntu 在OS X上生成的PDF: PDF generated on OS X HTML版本: HTML version 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个回答

4

OSX的默认无衬线字体是Helvetica,Ubuntu的默认无衬线字体是DejaVu Sans。我建议使用在两个环境中都通用的无衬线字体。

您可以将Helvetica安装到Ubuntu机器上,然后修改font-family: "Helvetica", sans-serif;

理想情况下,我会探索一种在两个环境中都可访问的字体,然后在font-family调用中指定它。


是的,我认为Arial是一种基本字体,到处都可以使用,但事实证明它在Ubuntu上不可用。因此,我在Ubuntu上安装了Arial,现在一切正常。 - Vladimir Prudnikov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接