【问题标题】:pdfkit uses different fonts when renders PDF document on OS X and Ubuntupdfkit 在 OS X 和 Ubuntu 上渲染 PDF 文档时使用不同的字体
【发布时间】:2016-03-04 01:28:42
【问题描述】:

我使用pdfkit 从 HTML 页面生成 PDF 文档。问题是它在我的开发机器(OS X)和生产服务器(Ubuntu)上使用不同的字体,所以我无法在开发和生产环境中获得一致的渲染。

看看这些截图:

在 Ubuntu 上生成的 PDF:

在 OS X 上生成的 PDF:

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上使用不同的字体以及如何强制它使用我想要的字体?

【问题讨论】:

    标签: pdf-generation wkhtmltopdf python-pdfkit


    【解决方案1】:

    OSX 使用 Helvetica 作为其默认的无衬线字体,而 Ubuntu 的默认字体是 DejaVu Sans。我建议使用环境之间常见的一种。

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

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

    【讨论】:

    • 是的,我以为 Arial 是一种基本字体,随处可见,但事实证明它在 Ubuntu 上不可用。所以我在 ununtu 上安装了 arial,一切都很好。
    猜你喜欢
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 2014-03-22
    • 2016-06-17
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多