【问题标题】:jinja2 and weasyprint path to imagejinja2 和 weasyprint 图像路径
【发布时间】:2019-02-05 23:01:56
【问题描述】:

我的代码使用 weasyprint 将 jinja2 模板转换为 PDF。 一切正常,除了我无法让图像出现在 PDF 中。

我的文件结构:

dist
src
    img
        image.png
    templates
        statement.html.j2
build.py

“构建.py”

import jinja2
import json
import os
import weasyprint
from weasyprint.fonts import FontConfiguration


def main():
    if not os.path.exists('dist'):
        os.makedirs('dist')
    jinja_env = jinja2.Environment(
            loader = jinja2.FileSystemLoader('src/templates')
        )
    css_dir = 'src/css'
    html_tpl = jinja_env.get_template('statement.html.j2')
    with open('sample/json/statement.json', 'r') as f:
        statement = json.load(f)
    statement = statement['statement']
    font_config = FontConfiguration()
    html = html_tpl.render(statement=statement)
    css_files = [weasyprint.CSS(os.path.join(css_dir, filename))
        for filename in os.listdir(css_dir)]
    rendered_html = weasyprint.HTML(
        string=html
    )
    rendered_html.write_pdf(
        'dist/statement.pdf',
        stylesheets=css_files,
        font_config=font_config
    )

if __name__ == '__main__':
    main()

“statement.html.j2”

<img class="img-responsive" src="../img/image.png">

图片路径是否正确? 如何引用模板中的图像? 那会是怎样的道路呢? 还是问题与图片参考无关?

【问题讨论】:

  • 鉴于您所说的目录结构,您的相对路径似乎是正确的,但只是为了排除故障,如果您将 ../img/image.png 替换为图片?
  • @HFBrowning 如果我给出绝对路径就可以了。
  • 所以这就是你的问题。只需修复您的相对路径,您就应该设置好了。

标签: python jinja2 weasyprint


【解决方案1】:

这里已经回答了这个问题: Image ignored in PDF rendering with jinja2 and weasyprint,

您需要在此处添加base_url='.'

HTML(string=html_out, base_url='.').write_pdf(outfile)

【讨论】:

    猜你喜欢
    • 2019-12-04
    • 2021-09-18
    • 2019-11-08
    • 2020-03-14
    • 2019-09-25
    • 1970-01-01
    • 2013-10-07
    • 2018-12-19
    • 1970-01-01
    相关资源
    最近更新 更多