xhtml2pdf未加载字体

问题描述

尝试加载静态字体。直接渲染/加载页面时,所有内容都会加载。但是当以pdf格式加载时,不会加载正确的字体!

pdf.html(也是,我正在pdf页面上加载静态文件。也是,按预期方式添加了link_callback。):

@font-face {
        font-family: 'Mulish';
        font-weight: 600;
        src: url("{% static 'fonts/Mulish-Regular.TTF' %}")
    }

    @font-face {
        font-family: 'Mulish';
        font-weight: 700;
        src: url("{% static 'fonts/Mulish-Bold.TTF' %}")
    } 
    html {
        font-family: 'Mulish' !important;
    }

utils.py

def render_to_pdf(template_src,context_dict={}):
template = get_template(template_src)
html = template.render(context_dict)
result = BytesIO()
pdf = pisa.CreatePDF(BytesIO(html.encode("UTF-8")),result,encoding='UTF-8',link_callback=link_callback)
if not pdf.err:
    return HttpResponse(result.getvalue(),content_type='application/pdf')
return None

def link_callback(uri,rel):

s_url = settings.STATIC_URL      # Typically /static/
s_root = settings.STATIC_ROOT    # Typically /home/userX/project_static/
m_url = settings.MEDIA_URL       # Typically /static/media/
m_root = settings.MEDIA_ROOT     # Typically /home/userX/project_static/media/

if uri.startswith(m_url):
    path = os.path.join(m_root,uri.replace(m_url,""))
elif uri.startswith(s_url):
    path = os.path.join(s_root,uri.replace(s_url,""))
else:
    return uri  # handle absolute uri (ie: http://some.tld/foo.png)

if not os.path.isfile(path):
    raise Exception(
        'media URI must start with %s or %s' % (s_url,m_url)
    )
return path

我知道将完整的URL路径添加到src确实可以,但是这是不可接受的,因为我不想每次需要加载内容时都更改路径

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...