如何在django

时间:2018-05-21 08:11:21

标签: python django xhtml2pdf

我想使用xhtml2pdf从django中的html生成pdf。但是xhtml2pdf似乎制作了完整HTML模板的PDF。我想说的是假设我的html文件中有一个侧面菜单,一个页眉,一个页脚和一些内容表。现在,我想只从html文件生成该表的pdf。我怎么能用xhtml2pdf做到这一点?

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以为页面的不同部分分隔模板文件。例如,您可能有一个包含常用模板的基本html,并且您还将包含要包含要转换为pdf的数据的table.html

您可以使用include内置模板标签在其他模板中使用它:请参阅文档here。您也可以检查extends templatetag,这是非常方便的here

这样的事情:

# base.html
{% include 'table.html' %}

# views.py
def render_to_pdf(request):
    template_path = 'table.html'  # Here is the template you want to convert
    context = {'myvar': 'this is your template context'}

    # Create a Django response object, and specify content_type as pdf
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'attachment; filename="report.pdf"'

    # find the template and render it.
    template = get_template(template_path)
    html = template.render(Context(context))

    # create a pdf
    pisaStatus = pisa.CreatePDF(
      html, dest=response, link_callback=link_callback)
    # if error then show some funy view
    if pisaStatus.err:
      return HttpResponse('We had some errors <pre>' + html + '</pre>')
    return response

您可以在xhtml2pdf文档here

中查看pdf创建