我正在尝试使用 Weasyprint 库在 Django 上输出 PDF,但图像不会出现在生成的 PDF 上。我已经为图像尝试了相对和静态 URL,但即使是静态 URL 也不显示图像。在 chrome 上打开 HTML 本身时,图像会显示。
这是我在 views.py 文件中生成的 pdf 视图:
def pdf_generation(request, some_slug)
stud = Student.objects.get(some_slug=some_slug)
studid = stud.some_slug
context = {'studid':studid}
html_string = render_to_string('templates/pdf_gen.html', context)
html = HTML(string=html_string)
pdf = html.write_pdf(stylesheets=[CSS(settings.STATIC_ROOT + '/css/detail_pdf_gen.css')]);
response = HttpResponse(pdf, content_type='application/pdf')
response['Content-Disposition'] = 'inline; filename="mypdf.pdf"'
return response
这是图像的 HTML 部分:
<DIV id="p1dimg1">
<IMG src="{% static 'img/image.jpg' %}" alt="">
</DIV>
和CSS:
#page_1 #p1dimg1 {position:absolute;top:0px;left:0px;z-
index:-1;width:792px;height:1111px;}
#page_1 #p1dimg1 #p1img1 {width:792px;height:1111px;}
非常感谢你
原文由 선풍기 发布,翻译遵循 CC BY-SA 4.0 许可协议
修正者:
添加
base_url=request.build_absolute_uri()
这样成为
这将允许在 HTML 文件中使用相对 URL。
对于图像,出于某种原因似乎只有 PNG 图像有效。
对于要在 PDF 上显示的 HTML 样式,请根据 Weasyprint 文档添加 presentational_hints=True: