Добавление горизонтальных линий с учетом макета страницы в макет таблицы ReportLab - PullRequest
4 голосов
/ 03 апреля 2011

Я создаю PDF, используя ReportLab, с таблицей, содержащей большую часть содержимого.

Чтобы визуально различать строки, я хотел бы поставить горизонтальную линию после каждой строки, какПока это не последняя строка на странице .

Чтобы поставить горизонтальную линию после каждой строки, я мог бы просто использовать TableStyle:

style = TableStyle([
     ("LINEBELOW", (0,0), (-1,-1), 1, colors.black),
   ])
t = Table(data)
t.setStyle(style)

... но использование TableStyles для этого не представляется возможным, потому что в этот момент ReportLab не будет знать макет страницы моего контента.

Есть ли способ сделать это с помощью onFirstPage иonLaterPages Параметры до doc.build?

1 Ответ

2 голосов
/ 04 апреля 2011

Но это должно сработать: в этом прелесть -1: это будет последняя строка / столбец, несмотря ни на что.Единственный реальный трюк - как убрать строку после последнего ряда.Для этого просто измените координаты, где заканчивается ваша «LINEBELOW».То есть ваш кортеж должен выглядеть следующим образом:

("LINEBELOW", (0, 0), (-1, -2), 1, colors.black)

Это будет гарантировать, что он применяется вплоть до строки -2, то есть рядом с последней строкой.Это должно дать вам именно то, что вы хотите.

ETA 2011/4/6

Ах, вам нужно splitlast.Это должно работать, если вы добавляете команду стиля после существующей команды «LINEBELOW», таким образом:

("LINEBELOW", (0, 'splitlast'), (-1, 'splitlast'), 0, colors.black)

или выбираете любой цвет, который хотите, если вы устанавливаете размер в 0.

...