Создайте простой отчет в формате PDF с помощью platypus

Я пытаюсь создать отчет в формате PDF, используя reportlab в django. Я могу начать простой отчет, работая непосредственно с холстом, но похоже, что утконос должен упростить задачу. Но я не могу заставить простой отчет об утконосе работать.

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']). Что я делаю не так?


person japhyr    schedule 21.08.2011    source источник


Ответы (1)


Вы получаете 'module' object is unsubscriptable, потому что обрабатываете модуль как массив :)

Если вы просмотрите исходный код reportlab, то увидите, что стили — это просто модуль с большим количеством вещей.

Чтобы этот пример работал, вам нужно импортировать таблицы стилей: from reportlab.lib.styles import getSampleStyleSheet, а затем styles = getSampleStyleSheet().

Или вы можете создать свою собственную таблицу стилей — посмотрите документацию reportlab, как это сделать :)

person bx2    schedule 21.08.2011
comment
styles['Heading1'] =› styles == модуль, ['Heading1'] не разрешено - person Thomas; 21.08.2011
comment
просто выделите точную точку, где возникает ошибка, для ясности. Продолжайте, здесь не на что смотреть~~ ›.› - person Thomas; 21.08.2011