为 Django 配置 Pisa 应该不会太难。
网上确实有几个示例向您展示了如何执行此操作并解释了如何链接到模板中的外部资源:
在您的情况下,您应该尝试第一篇博文中提到的链接回调函数:
def fetch_resources(uri, rel):
"""
Callback to allow pisa/reportlab to retrieve Images,Stylesheets, etc.
`uri` is the href attribute from the html link element.
`rel` gives a relative path, but it's not used here.
"""
path = os.path.join(settings.MEDIA_ROOT, uri.replace(settings.MEDIA_URL, ""))
return path
对于较新的 Django 版本,您可能应该使用STATIC_ROOT
而不是MEDIA_ROOT
然后fetch resources
在您的渲染方法中相应地使用:
pdf = pisa.pisaDocument(StringIO.StringIO(
html.encode("UTF-8")),
result,
link_callback=fetch_resources,
encoding="utf-8")