为了账号安全,请及时绑定邮箱和手机立即绑定

在Django网站中将HTML渲染为PDF

在Django网站中将HTML渲染为PDF

开心每一天1111 2019-11-21 12:49:08
对于我的django网站,我正在寻找一种将动态html页面转换为pdf的简单解决方案。页面包含HTML和来自Google可视化API的图表(该图表基于javascript,但必须包含这些图表)。
查看完整描述

3 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

我只是为CBV打了个招。未在生产中使用,但会为我生成PDF。可能需要为错误报告方面的事情工作,但到目前为止已经可以解决问题。


import StringIO

from cgi import escape

from xhtml2pdf import pisa

from django.http import HttpResponse

from django.template.response import TemplateResponse

from django.views.generic import TemplateView


class PDFTemplateResponse(TemplateResponse):


    def generate_pdf(self, retval):


        html = self.content


        result = StringIO.StringIO()

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


        if rendering.err:

            return HttpResponse('We had some errors<pre>%s</pre>' % escape(html))

        else:

            self.content = result.getvalue()


    def __init__(self, *args, **kwargs):

        super(PDFTemplateResponse, self).__init__(*args, mimetype='application/pdf', **kwargs)

        self.add_post_render_callback(self.generate_pdf)



class PDFTemplateView(TemplateView):

    response_class = PDFTemplateResponse

像这样使用:


class MyPdfView(PDFTemplateView):

    template_name = 'things/pdf.html'


查看完整回答
反对 回复 2019-11-21
  • 3 回答
  • 0 关注
  • 898 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信