2016-01-20 7 views
0

Я использую reportlab 3.1.44 в python 2.7 Вот код, который использует абзац в таблице.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() 

Это 2 проблемы, когда шрифт большой.

  • текст больше, что клетка, так что выходит за пределы
  • расстояние между линиями слишком мал

Как я могу исправить эту проблему?

ответ

4

2 проблемы на самом деле вызваны одной и той же проблемой, а именно высотой Paragraph. Ячейка таблицы определяется строкой, которая определяет высоту линии. И в то же время отсутствие пробелов также вызвано перемещением строк.

В Reportlab строка-строка задается с использованием атрибута стиля leading в соответствии с документами.

Расстояние между строчным (ведущий)

Вертикальное смещение между точкой, в которой одна линия начинается и где начинается следующая называется ведущим смещение.

Таким образом, правильная версия кода будет использовать:

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

, которые приводят к: Example of the output after correction

+0

Великого. Работает хорошо. Благодарю. – max

Смежные вопросы