В общем поразмышлял и склоняюсь к варианту при котором нужно после генерации HTML JS'сом считать высоту всего контента, затем разбивать эту высоту на А4, находить высоту последнего листа, на котором расположиться блок с подписями и проверять: если на последней странице расположился только блок с подписями, то случайным образом проходить по произвольным страницам, ставить перед последней строкой таблицы разрыв (чтобы сдвинуть строку таблицы на сл. страницу) параллельно суммируя высоту сдвинутых строки. Делать это пока высота сдвинутых строк + высота блока с подписями не будет >= {высота А4 / 2}.
Простым языком - будем сдвигать по одной строке таблицы с произвольных листов пока на последней странице таблицы ими не заполнится половина листа...
Решение конечно не очень изящное, но иного выхода я не вижу.
Можно сказать, что мой вывод это перефразированный ответ
wazza (за что ему спасибо), только более конкретизированное и приближенное к нашим реалиям.