django xhtml2pdf 没有得到图像
django xhtml2pdf not getting image
我正在尝试将 html 渲染为 pdf,它真的很棒!只有一个问题,那就是模板获取图像:
我正在使用 python xhtml2pdf
库进行 pdf 渲染
这是我渲染 pdf 的方法:
def render_pdf(template_src, context_dict):
template = get_template(template_src)
html = template.render(context_dict)
result = BytesIO()
pdf = pisa.pisaDocument(BytesIO(html.encode("utf-8")), result)
if not pdf.err:
return HttpResponse(result.getvalue(), content_type='application/pdf')
return HttpResponse('Unable to process the request, We had some errors<pre>%s</pre>' % escape(html))
下面是我的views.py
:
def test_view(request):
context = {
'test': 'a test string'
}
return render_pdf('test.html', context)
这是我的 test.html
{% load static %}
<p>hello test </p>
<img src="{% static 'ok.jpg' %}">
如果我使用 django 默认 render
方法渲染它会获取图像但是当我渲染 pdf 时图像不会获取。
我听说过使用 link_callback
方法和此文档的解决方案:https://xhtml2pdf.readthedocs.io/en/latest/usage.html
我不知道在哪里包含这个或者我怎样才能实现这个。
谁能帮我解决这个问题?
我建议修改你的html模板,使用图片文件的绝对/相对路径(你硬盘中的目录路径),而不是使用{% static %}标签。静态标签仅适用于渲染 HTMl,但 pisa 无法从中读取图像。
我从一个从 html 生成 PDF 的项目中获得了这段代码,我的图像是这样完成的:
<img src="{{ STATIC_ROOT }}/report/logo.png" >
其中 STATIC_ROOT 是从渲染上下文传递的变量。
如果它仍然相关,这对我有用。
我的静态文件夹在我的根目录中。
{% 负载静态 %}
我正在尝试将 html 渲染为 pdf,它真的很棒!只有一个问题,那就是模板获取图像:
我正在使用 python xhtml2pdf
库进行 pdf 渲染
这是我渲染 pdf 的方法:
def render_pdf(template_src, context_dict):
template = get_template(template_src)
html = template.render(context_dict)
result = BytesIO()
pdf = pisa.pisaDocument(BytesIO(html.encode("utf-8")), result)
if not pdf.err:
return HttpResponse(result.getvalue(), content_type='application/pdf')
return HttpResponse('Unable to process the request, We had some errors<pre>%s</pre>' % escape(html))
下面是我的views.py
:
def test_view(request):
context = {
'test': 'a test string'
}
return render_pdf('test.html', context)
这是我的 test.html
{% load static %}
<p>hello test </p>
<img src="{% static 'ok.jpg' %}">
如果我使用 django 默认 render
方法渲染它会获取图像但是当我渲染 pdf 时图像不会获取。
我听说过使用 link_callback
方法和此文档的解决方案:https://xhtml2pdf.readthedocs.io/en/latest/usage.html
我不知道在哪里包含这个或者我怎样才能实现这个。
谁能帮我解决这个问题?
我建议修改你的html模板,使用图片文件的绝对/相对路径(你硬盘中的目录路径),而不是使用{% static %}标签。静态标签仅适用于渲染 HTMl,但 pisa 无法从中读取图像。
我从一个从 html 生成 PDF 的项目中获得了这段代码,我的图像是这样完成的:
<img src="{{ STATIC_ROOT }}/report/logo.png" >
其中 STATIC_ROOT 是从渲染上下文传递的变量。
如果它仍然相关,这对我有用。
我的静态文件夹在我的根目录中。
{% 负载静态 %}