gpt4 book ai didi

python - 如何将绘图与其他 HTML 内容一起导出为 pdf?

转载 作者:行者123 更新时间:2023-12-03 20:50:38 27 4
gpt4 key购买 nike

我尝试了 3 个将 HTML 转换为 PDF 的库,即 xhtml2pdf、weasyprint 和 wkhtmltopdf。
我的 HTML 中包含有 plotly 图,它们是离线图,即。从 plotly.offline.plots 生成的图形
当我在浏览器中加载相同的 HTML 时,图形和其他 HTML 内容呈现良好,但是当使用上述任何一种库将其转换为 PDF 时,HTML 内容呈现良好但图形在 PDF 中变为空白。

from plotly.graph_objs import Scatter
from plotly.offline import plot

fig = plot([Scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])], output_type='div')

我将此无花果传递给 Django 模板并将其呈现为
{{ fig|safe }}
使用 xhtml2pdf、weasyprint 和 wkhtmltopdf 将 HTML 转换为 PDF,但它们都没有显示图形。
我的代码中缺少什么?谁能告诉我任何 HTML 到 PDF 转换库会在 PDF 中呈现 Plotly 图形吗?

最佳答案

我遇到了同样的问题,最终只是将图形保存到图像文件,然后将图像加载到模板中,然后使用 weasyprint 渲染(似乎比其他解决方案更容易弄乱样式)。
有关如何将图形保存为图像的信息,请参见以下链接。
https://plotly.com/python/static-image-export/
其他有用的链接:
https://weasyprint.readthedocs.io/en/latest/features.html#html
https://weasyprint.org/samples/view.py的pdf渲染部分:

    html_string = render_to_string('management/report_template.html', context)
html = HTML(string=html_string, base_url=request.build_absolute_uri())
result = html.write_pdf(presentational_hints=True)

# Creating http response
response = HttpResponse(content_type='application/pdf;')
response['Content-Disposition'] = 'inline; filename=report.pdf'
response['Content-Transfer-Encoding'] = 'binary'
with tempfile.NamedTemporaryFile(delete=True) as output:
output.write(result)
output.flush()
output = open(output.name, 'rb')
response.write(output.read())

return response
base_url=request.build_absolute_uri()将允许在 HTML 文件中使用相对 URL。 presentational_hints=True用于在 PDF 上显示的 HTML 样式。

关于python - 如何将绘图与其他 HTML 内容一起导出为 pdf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63087172/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com