Не все принтеры созданы одинаково.
У вас возникли проблемы, поскольку принтер не контролируется ни веб-браузером, ни HTML-кодом. Он управляется драйвером принтера, который поставляется вместе с принтером. Эта функция (и ее настройки) принадлежит владельцу компьютера, отображающего страницу, а не вам.
Ваш код не может знать заранее, сколько строк может поместить принтер, подключенный к системе пользователя, на страницу, или как принтер выложит таблицу. Будет иначе, если пользователь с другим принтером откроет страницу. Как и в разных разрешениях экрана, принтеры имеют разное разрешение в пикселях.
Таким образом, все правила, которые применяются к различным экранам (и их недостатки), также применяются к различным принтерам. Мало того, что вы не можете знать, где принтер разбивает страницу, вы даже не можете знать, насколько велика напечатанная страница с точки зрения того, сколько содержимого помещается на странице.
Чтобы получить всю таблицу (или несколько таблиц) на странице, пользователь должен выбрать части, которые он хочет напечатать, и затем использовать выбор печати в диалоговом окне принтера.