如何从django?-pdfkit获取渲染模板

时间:2018-04-24 18:53:02

标签: django-templates pdfkit

我的django应用程序中有一个模板,我需要在变量中呈现它或将其保存在html文件中。

我的目标是将模板的html渲染转换为pdf,我使用的是pdfkit,因为它是我见过的最好的html to pdf转换器,reportlab没有做我想要的。

当我尝试做这样的事情时:

pdf = pdfkit.from_file ('app / templates / app / table.html', 'table.pdf')

我得到了pdf,但打印出类似这样的内容:

enter image description here

我感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

这是我的案例的解决方案,我使用django 2.0.1和pdfkit 0.6.1:

获取模板:

template = get_template ('plapp / person_list.html')

使用数据进行渲染:

html = template.render ({'persons': persons})

继续在views.py中定义方法,直接在浏览器中下载pdf:

def pdf(request):
    persons = Person.objects.all()
    template = get_template('plapp/person_list.html')
    html = template.render({'persons': persons})
    options = {
        'page-size': 'Letter',
        'encoding': "UTF-8",
    }
    pdf = pdfkit.from_string(html, False, options)
    response = HttpResponse(pdf, content_type='application/pdf')
    response['Content-Disposition'] = 'attachment;
    filename="pperson_list_pdf.pdf"'
    return response    

答案 1 :(得分:1)

unresolved reference `gmpy2`

使用以上方法导入返回模板的函数。 from django.template.loader import get_template, render_to_string 返回模板对象,而get_template返回呈现模板的字符串。这是我使用weasyprint而不是pdfkit的方式。

render_to_string