使用platypus生成简单的pdf报告

时间:2011-08-21 17:49:15

标签: django pdf reportlab platypus

我正在尝试使用django中的reportlab生成pdf报告。我可以通过直接使用画布来获得一个简单的报告,但看起来platypus应该会让事情变得更容易。但我无法得到一份简单的鸭嘴兽报告。

def all_comps_pdf_report(request):

    # Set up HttpResponse object
    response = HttpResponse(mimetype='application/pdf')
    response['Content-Disposition'] = 'attachment; filename=all_competencies.pdf'

    from reportlab.platypus.doctemplate import SimpleDocTemplate
    from reportlab.platypus import Paragraph
    from reportlab.lib import styles

    doc = SimpleDocTemplate(response)
    Elements = []
    p = Paragraph("Hello World", styles['Heading1'])
    Elements.append(p)
    doc.build(Elements)
    return response

我收到错误'module' object is unsubscriptable,这是抱怨行p = Paragraph("Hello World", styles['Heading1'])。我做错了什么?

1 个答案:

答案 0 :(得分:1)

你得到'module' object is unsubscriptable,因为你正在处理模块,因为它是一个数组:)

如果您浏览reportlab的源代码,那么您将看到样式只是一个包含大量内容的模块。

要使此示例生效,您需要导入样式表:from reportlab.lib.styles import getSampleStyleSheet然后styles = getSampleStyleSheet()

或者您可以创建自己的样式表 - 查看reportlab关于如何执行此操作的文档:)