【问题标题】:Reportlab - How to add space between wordsReportlab - 如何在单词之间添加空格
【发布时间】:2018-11-18 23:42:50
【问题描述】:

我有一条短信:

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

我想在 word1 和 word2 之间添加空格:

word1    word2

我该怎么做?

【问题讨论】:

  • 也许只是 ' '.join([word1, word2]) ?
  • 这是行不通的。它没有在 word1 和 word2 之间添加空格
  • 看起来你可能需要在它们之间添加一个\t 制表符。
  • 嗯,也许一个样本会有所帮助:ptext = 'Sincerely,' Story.append(Paragraph(ptext, styles["Normal"])) Story .append(Spacer(1, 48))
  • 它也不起作用。它只添加一个空格

标签: python reportlab


【解决方案1】:

我知道我在这方面有点晚了,但是为不间断空间添加 html &amp;nbsp; 对我有用。

【讨论】:

  • 你帮了我。谢谢
  •  非常适合内联单词之间的使用。但是,如果您想在一行中的第一个单词(或字符)之前添加超过 1 个空格,则需要解决一些问题,简单的  不会这样做。我的解决方法是添加一个白色的小点,所以  不是该行的第一个字符...
【解决方案2】:

我怀疑是否有一个简单的解决方案。

作为一种解决方法,您可以尝试在段落中添加一个空白(透明或背景颜色)1px x 1px 图像并将其缩放到所需的宽度。

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

另一个(乏味的)解决方案是使用 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)

希望这会有所帮助。

【讨论】:

    【解决方案3】:
    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
    

    你可以用这个。

    【讨论】:

      猜你喜欢
      • 2022-08-03
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 2011-08-08
      • 2015-03-30
      • 2011-04-28
      • 1970-01-01
      • 2021-07-22
      相关资源
      最近更新 更多