Django Html и сюжеты в PDF
Я использую приложение Django для создания некоторых графиков с помощью Plotly так
Я пытался сгенерировать pdf файл следующих графиков моя HTML страница:
<center> <p class="lead"><strong><em> All Plots </em></strong></p></center>
<div class="row">
<div class="col-md-6" >
{{ sunburst|safe}}
</div>
<div class="col-md-6" >
{{ sunburst2|safe}}
</div>
</div>
и мой url.py :
path('export_pdf/', views.export_pdf, name='export_pdf'),
и views.py;
def export_pdf(request):
df = px.data.gapminder().query("country=='Canada'")
fig = px.line(df, x="year", y="lifeExp", title='Life expectancy in Canada')
df2 = px.data.gapminder().query("continent=='Oceania'")
fig2 = px.line(df2, x="year", y="lifeExp", color='country')
chart = fig.to_html()
chart2 = fig2.to_html()
context= {
'sunburst':chart,
'sunburst2':chart2,
}
return render(request, 'Home/Reporting/part_pdf.html',context)
Я попробовал код с этой страницы, но не могу сгенерировать файл, помогите?
https://plotly.com/python/v3/pdf-reports/
есть ли другие способы сделать это (html-страница с графиками и таблицами)?
Всего наилучшего
Я искал долго и упорно и не смог ничего найти. Я нашел решение, которое сработало очень хорошо для меня:
import plotly.graph_objs as go
import plotly.io as pio
labels = ['Alice','Bob','Carl']
vals = [2,5,4]
data = [go.Bar(x=vals, y=labels, orientation='h')]
layout = go.Layout(margin_pad=10)
fig = go.Figure(data=data,layout=layout)
svg = pio.to_image(fig, format="svg")
context["svg"] = svg.decode("utf-8")
и затем в шаблоне что-то вроде этого
<div>
{{ svg|safe }}
</div>
Первым решением было то, на которое вы ссылались. Однако качество было очень плохим. Это решение намного более четкое.
Я использовал его с weasyprint, но я уверен, что он будет работать и с другими решениями.