Django Html и сюжеты в PDF

Я использую приложение Django для создания некоторых графиков с помощью Plotly так

Я пытался сгенерировать pdf файл следующих графиков моя HTML страница:

        <center> <p class="lead"><strong><em>&nbsp;All Plots&nbsp;</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, но я уверен, что он будет работать и с другими решениями.

Вернуться на верх