我正在使用reportlab 2.6的ListFlowable制作带有彩色圆圈项目符号的项目符号列表。但是,我希望子弹出现在文本旁边,而不是与前面的非缩进文本对齐。我试图打开ListFlowable源代码,但我找不到那么多。这就是我所拥有的:
from reportlab.platypus import Paragraph, ListFlowable, ListItem, SimpleDocTemplate, Frame
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.colors import CMYKColor
doc = SimpleDocTemplate("SOtest.pdf")
styles = getSampleStyleSheet()
Story = []
Story.append(Paragraph("Header Text, I dont want the bullets directly below the H"
,styles['Normal']))
my_list = ListFlowable(
[
ListItem(Paragraph("Line 1",styles['Normal'])
,bulletColor = CMYKColor(0.81, 0.45, 0.53, 0.23)
,value = 'circle'
),
ListItem(Paragraph("Line 2",styles['Normal'])
,bulletColor = CMYKColor(0.81, 0.45, 0.53, 0.23)
,value = 'circle'
)
],
bulletType='bullet',
start='circle'
)
Story.append(my_list)
doc.build(Story)
此代码导致:
但我希望它看起来像:
我手动编辑了第二张图片以获得所需的效果。
我考虑过在列表中创建一个列表,以获得一个缩进的子弹,但后来我不知道如何使文本更接近子弹。
答案 0 :(得分:3)
只需将leftIndent
参数传递到ListItem
。
my_list = ListFlowable([
ListItem(Paragraph("Line 1", styles['Normal']),
leftIndent=35, value='circle',
bulletColor=CMYKColor(0.81, 0.45, 0.53, 0.23)
),
ListItem(Paragraph("Line 2", styles['Normal']),
leftIndent=35, value='circle',
bulletColor=CMYKColor(0.81, 0.45, 0.53, 0.23))
],
bulletType='bullet',
start='circle',
leftIndent=10
)
修改强>
您必须设置leftIndent
的{{1}}来定义项目符号和文本之间的空格。
答案 1 :(得分:1)
我最后深入研究了它(ReportLab source code…)以发现如何处理未垂直对齐的子弹。对于其他项目符号列表控制狂,我建议使用以下额外kwargs
:
bulletOffsetY
+ ve将其向上移动,-ve将其向下移动bulletFontSize
如果您默认使用巨型子弹,就像我做的那样spaceBefore
和spaceAfter
控制列表项之间的垂直差距