Django中Pisa生成PDF不渲染CSS

7 投票
1 回答
8125 浏览
提问于 2025-04-17 10:58

我用Pisa把HTML生成了一个PDF文件:

def fetch_resources(uri, rel):
    path = os.path.join(settings.MEDIA_ROOT, uri.replace(settings.MEDIA_URL, ""))
    return path

def write_pdf(template_src, context_dict, filename):
    template = get_template(template_src)
    context = Context(context_dict)
    html  = template.render(context)
    result = open(filename, 'wb')
    pdf = pisa.pisaDocument(StringIO.StringIO(
        html.encode("UTF-8")), result, link_callback=fetch_resources)
    result.close()

我的HTML里面有一个指向外部CSS的链接,显示得很好,但Pisa并没有使用这个CSS(比如字体大小、表格单元格宽度、文本对齐等等)。

<!DOCTYPE html>
<html lang="fr">
<head>
    <link rel="stylesheet" href="/site_media/style/style.css" />
</head>

<body>
....

我是不是漏掉了什么?

谢谢

1 个回答

5

你可以试试这个链接:'Pisa和Reportlab的陷阱'。我还需要添加这个内容。

def fetch_resources(uri, rel):

此外,我的所有CSS样式都放在模板里。还要确保你使用的是xhtml2pdf,而不是旧版的ho.pisa。

撰写回答