2016-01-20 153 views
0

我在python 2.7中使用reportlab 3.1.44 这是在表中使用段落的代码。reportlab行间距和表中段落的拟合

from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer 
from reportlab.lib.styles import getSampleStyleSheet 
from reportlab.rl_config import defaultPageSize 
from reportlab.lib.units import inch 
from reportlab.lib.styles import ParagraphStyle 
from reportlab.platypus.tables import Table, TableStyle 
from reportlab.lib import colors 
from reportlab.lib.colors import Color 

styles = getSampleStyleSheet() 


def make_report(): 
    doc = SimpleDocTemplate("hello.pdf") 
    story = [] 
    style = styles["Normal"] 
    ps = ParagraphStyle('title', fontSize=20) 

    p1 = "here is some paragraph to see in large font" 
    data = [] 
    table_row = [Paragraph(p1, ps),\ 
       Paragraph(p1, ps)\ 
       ] 


    data.append(table_row) 
    t1 = Table(data) 
    t1.setStyle(TableStyle([\ 
       ('GRID', (0,0), (-1,-1), 0.25, colors.red, None, (2,2,1)),\ 
      ])) 
    story.append(t1) 

    doc.build(story) 

if __name__ == "__main__": 
    make_report() 

这是字体较大时的两个问题。

  • 文本较大的电池,以便它超越国界
  • 的间距行间太小

我怎样才能解决这个问题?

回答

4

这两个问题实际上是由同一个问题引起的,也就是Paragraph的高度。表格单元由确定线条高度的线条间距决定。同时,由于行间距也导致空白不足。

在Reportlab中,根据文档使用leading样式属性设置行间距。

间间隔(主导)

垂直于其中一个行开始和下一个开始被称为前导偏移的点之间的偏移量。

因此你的代码的正确版本将使用:

ps = ParagraphStyle('title', fontSize=20, leading=24) 

这导致: Example of the output after correction

+0

大。效果很好。谢谢。 – max