如何使用weasyprint自定义字体

时间:2017-12-11 09:15:09

标签: python django weasyprint

我有一个django应用程序,我想从我的django视图创建一个pdf。 我使用weasyprint,由于某种原因它不接受我的自定义字体。 字体网址正常工作,当我使用相同的font-face渲染相同的html时,我看到了正确的字体,但我的pdf渲染错误。我也试过base64字体字符串,但没有运气。我的渲染代码是:

driver.execute_script('arguments[0].click();', ExpiryYear)

知道我做错了什么吗?

2 个答案:

答案 0 :(得分:1)

正如您可以在文档中看到的那样:

  

WeasyPrint应该支持FreeType处理的任何字体格式(任何   格式广泛使用除了WOFF2

SRC:http://weasyprint.readthedocs.io/en/latest/features.html#fonts

答案 1 :(得分:0)

如果CSS中有@font-face条规则,则必须创建一个 FontConfiguration对象:

fromweasyprintimport HTML, CSS
from weasyprint.fonts import FontConfiguration

font_config = FontConfiguration()
html = HTML(string='<h1>The title</h1>')
css = CSS(string='''
    @font-face {
        font-family: Gentium;
        src: url(http://example.com/fonts/Gentium.otf);
    }
    h1 { font-family: Gentium }''', font_config=font_config)
html.write_pdf(
    '/tmp/example.pdf', stylesheets=[stylesheet],
    font_config=font_config)

https://weasyprint.readthedocs.io/en/stable/tutorial.html?highlight=FontConfiguration