如何在ReportLab中的同一段落中包含多种文本颜色?

时间:2016-06-02 20:34:45

标签: python xml reportlab

我想创建一个如下段落:

step = str(StepNumber) #StepNumber is an int

if flag == True:
    color = "green" 
    sv = "[S]"

else:
    color = "red" 
    sv = "[V]"


P = Paragraph('<font color = "black>step</font>' + '<font color = color>sv</font>', style)

这不起作用并将XML字符串放入报表中,而不是将其应用于step和sv参数。目标是在同一段落中使用黑色字体的步骤编号和绿色或红色字体的sv参数(取决于上面的if语句)。我试着把它们分成两个单独的段落,但这似乎在两段之间添加了不受欢迎的新行(或间距,不确定)。

当段落需要一个已经指定了自己的字体属性(如字体颜色)的样式参数时,如何在段落中使用XML?

1 个答案:

答案 0 :(得分:1)

将其打印为XML的原因是因为您提供的正是如此。所以我们必须按如下方式正确格式化字符串:

step = str(StepNumber)  # StepNumber is an int

if flag:
    color = "green"
    sv = "[S]"
else:
    color = "red"
    sv = "[V]"

P = Paragraph('<font color="black">{step}</font> <font color="{color}">{sv}</font>'.format(color=color, sv=sv, step=step)
    , style)

现在字符串完全取决于您的变量,XML是有效的。