2016-06-02 14 views
0

Ich möchte einen Absatz wie folgt erstellen:Wie können mehrere Textfarben in einem Absatz in ReportLab enthalten sein?

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) 

Dies funktioniert nicht und legt den XML-String in den Bericht, anstatt ihn auf die Stufe und sv Parameter anwenden. Das Ziel ist, die Schrittnummer in schwarzer Schrift und den Parameter sv in grüner oder roter Schrift (abhängig von der if-Anweisung oben) innerhalb desselben Absatzes zu haben. Ich habe versucht, diese in zwei separate Absätze zu setzen, aber das scheint unerwünschte neue Zeilen (oder Abstand, nicht sicher) zwischen den zwei Absätzen hinzuzufügen.

Auch wie kann XML in einem Absatz verwendet werden, wenn ein Absatz einen style-Parameter benötigt, der bereits seine eigenen Schriftattribute (z. B. Schriftfarbe) angibt?

+0

Soweit die zweite Frage geht, sieht wie die XML-Attribute innerhalb des Absatztexts die Absatzstilattribute überschreiben. – DannyMoshe

Antwort

1

Der Grund, warum es als XML gedruckt wird, ist, weil Sie genau das liefern. Also müssen wir die Zeichenfolge richtig formatiert wie folgt:

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) 

Nun ist die Zeichenfolge genau, hängt von Ihren Variablen und die XML gültig ist.

Verwandte Themen