Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create a bulleted list in ReportLab

How can I create a bulleted list in ReportLab? The documentation is frustratingly vague. I am trying:

text = ur '''
<para bulletText="&bull;">
item 1
</para>
<para bulletText="&bull;">
item 2
</para>
'''
Story.append(Paragraph(text,TEXT_STYLE))

But I keep getting errors like list index out of range. It seems that I can't put more than one <para></para> in a single call to Paragraph()? I also tried setting TEXT_STYLE.bulletText="&bull;" but that doesn't work either...

like image 730
gerdemb Avatar asked Apr 14 '09 18:04

gerdemb


2 Answers

The very recent versions of ReportLab have ListFlowable and ListItem objects (check Chapter 9 of the current user guide).

like image 182
user637773 Avatar answered Sep 23 '22 18:09

user637773


The bulletText argument is actually a constructor to the Paragraph object, not the <para> tag :-) Try this:

story.append(Paragraph(text, TEXT_STYLE, bulletText='-'))

Have a look at the examples on page 68 (page 74 now, in 2012) of the ReportLab Documentation, though. The convention in ReportLab seems to be to use the <bullet> tag, and the docs do warn that you can have only one per Paragraph instance. We render our bullets in ReportLab like so:

story.append(Paragraph('<bullet>The rain in spain</bullet>', TEXT_STYLE))
like image 39
Jarret Hardie Avatar answered Sep 22 '22 18:09

Jarret Hardie