方法:python-pdfkit 将网页(JS生成)转换为PDF

3 投票
1 回答
5190 浏览
提问于 2025-04-20 19:25

views.py

def download_as_pdf(request):
    # some stuff/function call to get updated(with data and JS) template and render it

    return render(request, temp)

def download(request):
    import pdfkit
    pdfkit.from_url('/download/', 'out.pdf', options={'ignore-load-errors': None})
    return HttpResponse('DONE')

urls.py

url(r'^download/', views.download_as_pdf, name="download_pdf")

我想把/download/这个网址的所有内容(一些图表,使用JS生成的 - flotcharts)打印到PDF里。如果我在download_as_pdf这个视图里放这两行代码

import pdfkit
pdfkit.from_url('/download/', 'out.pdf', options={'ignore-load-errors': None})

它在PDF里什么都不打印(虽然PDF会下载,但里面是空的)。我觉得可能是因为模板渲染在这些语句之后进行,所以才会这样??

我应该怎么做才能把图表打印到PDF里?(我可以通过线程来解决这个问题吗?怎么做?)或者有没有其他的方法?

1 个回答

5

这可能是因为在整个JavaScript加载完成之前,PDF就已经被渲染出来了。如果你在JavaScript中加入一个延迟,它就能正常工作了。

 options = {
    'javascript-delay':'5000'
           }

撰写回答