Reportlab - How to add space between words

7.2k views Asked by At

I have a text:

elements.append(Paragraph(<font size=10>word1 word2</font>, styleSheet["Normal"]))

I want to add space between word1 and word2:

word1    word2

How I can do this?

3

There are 3 answers

0
Denis On

I doubt there is an easy solution for it.

As a workaround you could try adding a blank (transperent or background color) 1px x 1px image in your paragraph and scale it to the desired width.

<font size=10>word1<img src="../path/to/image" width="10" />word2</font>

Another (tedious) solution would be to layout your paragraph yourself with textobjects created by canvas.beginText(x, y).

textobject = canvas.beginText(x, y)
textobject.setWordSpace(10)
textobject.textLine("word1 word2")
... (setting other parameters such as font etc.)
canvas.drawText(textobject)

Hope this helps.

0
Benjamin Daniel On
def pad_text(text, num):
    text = str(text)
    num = int(num)
    text = text[:num]
    remaining = num - len(text)
    print(remaining)
    if (remaining == 0):
        return '<div>'+text+'</div>'
    else:
        res = '<div>'+text+ ' &nbsp;'*remaining +'</div>'
        return res

You can use this.

2
Don Guernsey On

I know I am a little late on this but adding the html for non-breaking space &nbsp; worked for me.