Я должен спросить: вы пробовали использовать стиль таблицы VALIGN: MIDDLE?
что-то вроде:
t=Table(data)
t.setStyle(TableStyle([('VALIGN',(-1,-1),(-1,-1),'MIDDLE')]))
(подробнее в разделе 7.2 руководства пользователя ReportLab)
Если этого не происходит, то ваш объект абзаца должен быть на всю высоту ячейки и выровнен по внутреннему краю.
Не могли бы вы опубликовать небольшой образец, который воспроизводит проблему?