django html导出pdf,在Django网站中将HTML渲染为PDF

小编典典

尝试从Reportlab解决方案。

下载并像往常一样使用python setup.py install安装

你还需要安装以下模块:具有easy_install的xhtml2pdf,html5lib,pypdf。

这是一个用法示例:

首先定义此功能:

import cStringIO as StringIO

from xhtml2pdf import pisa

from django.template.loader import get_template

from django.template import Context

from django.http import HttpResponse

from cgi import escape

def render_to_pdf(template_src, context_dict):

template = get_template(template_src)

context = Context(context_dict)

html = template.render(context)

result = StringIO.StringIO()

pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("ISO-8859-1")), result)

if not pdf.err:

return HttpResponse(result.getvalue(), content_type='application/pdf')

return HttpResponse('We had some errors

%s
' % escape(html))

然后,你可以像这样使用它:

def myview(request):

#Retrieve data or whatever you need

return render_to_pdf(

'mytemplate.html',

{

'pagesize':'A4',

'mylist': results,

}

)

模板:

My Title

@page {

size: {{ pagesize }};

margin: 1cm;

@frame footer {

-pdf-frame-content: footerContent;

bottom: 0cm;

margin-left: 9cm;

margin-right: 9cm;

height: 1cm;

}

}

{% for item in mylist %}

RENDER MY CONTENT

{% endfor %}

{%block page_foot%}

Page

{%endblock%}

希望能帮助到你。

2020-03-26

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值