【问题标题】:How to insert a carriage return in a ReportLab paragraph?如何在 ReportLab 段落中插入回车?
【发布时间】:2015-02-04 01:25:15
【问题描述】:

有没有办法在 ReportLab 的段落中插入回车?我正在尝试将“\n”连接到我的段落字符串,但这不起作用。

Title = Paragraph("Title" + "\n" + "Page", myStyle)

我想这样做是因为我将名称放入单元格中,并且想要控制单元格中一行上有多少个名称(理想情况下为 1 个)。一个单元格可以包含多个名称,但在该单元格中,我希望每个名称都在自己的行上,因此需要插入新行。

在某些时候,我会因帧错误而变得很大(我认为这与表太大或合并行太多有关)。我能想到抑制这种情况的唯一方法是在单元格中每行只有一个名称,这样我就可以根据名称的数量限制表格大小并将表格分割成更小的表格。

似乎必须有一种更清洁的方式来做到这一点。有什么建议?

【问题讨论】:

    标签: python reportlab


    【解决方案1】:

    Paragraph 是 reportlab 中的 Flowable。换行符不会以您希望的方式在流中工作。如果您的Paragraph 在表格中(如您所建议的那样),您可能会考虑创建一个没有流动的单元格。例如,您可以这样做:

    data = [['Title\nPage', 'Name', 'Exists'],  # note the newline character
            ['', 'George', 'True']]
    t = Table(data, style=style_)
    ...
    

    以上示例将使第一个数据单元格高两行(但属于同一单元格)。

    但是,如果您确实需要保留 Paragraph 可流动的样式,则可以在同一个单元格中插入两个段落:

    title1 = Paragraph("Title", myStyle)
    title2 = Paragraph("Page", myStyle)
    cell = [title1, title2]               # put this in a single cell of your table
    

    【讨论】:

      【解决方案2】:

      如果你想开始一个新的段落(不管你是否在一个表格中),你可以使用<br/>标签。这也应该适用于您:

      Title = Paragraph("Title" + "<br/>" + "Page", myStyle)
      

      (信用:Reportlab - how to introduce line break if the paragraph is too long for a line)

      【讨论】:

      • &lt;br&gt; 将提高 ValueError: paraparser: syntax error: No content allowed in br tag 但 &lt;br/&gt; 或 &lt;br /&gt; both 工作正常。
      猜你喜欢
      • 2016-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-14
      相关资源
      最近更新 更多