Печать таблиц HTML без разделения строки на две страницы

Мне нужно распечатать некоторые данные в таблице HTML из Internet Explorer (различные версии) и Safari в OS X. Игнорирование Safari на данный момент.

При печати таблицы с большим количеством строк, чем может помещаться на странице, последняя строка на странице часто разделяется на часть строки на первой странице, а остальная часть строки на следующей странице.

Это выглядит уродливо. Есть ли способ избежать этого?

Я искал вокруг и до сих пор нашел page-break-before: always, но я не уверен, что это то, что я ищу, так как я не буду знать, сколько строк будет соответствовать стр. например строки могут быть более высокими или короче в зависимости от содержимого, и пользователь может печатать в портретном или альбомном режиме. Я предполагаю, что A4, по крайней мере, но если пользователь использовал букву в США или какой-то другой формат бумаги, это создало бы еще большую неопределенность. Кроме того, что относительно полей принтера?

Итак, есть ли способ обойти это? Или мне просто нужно угадать, сколько строк подойдет и заставит разрыв страницы после этого? Будет ли это работать?

Ответ 3

Чтобы избежать печати разделяемых ячеек в Safari:

tr
{
    display: block;
    page-break-inside: avoid;
    -webkit-region-break-inside: avoid; 
}

Ответ 4

Несколько простых решений существуют для предотвращения разрывов страниц внутри строк, но у них есть довольно большие ограничения, которые, как правило, делают их бесполезными для чего-либо, кроме интрасети.

Более универсальное решение, которое только немного сложнее, можно найти здесь. Его главный недостаток заключается в том, что он требует фиксированной ширины столбцов.

Мое любимое решение довольно сложное, но, вероятно, это вызовет наименьшее количество головных болей в конце. Он использует JavaScript для превращения каждой строки в отдельный, нерушимый блок (но не таким образом, который влияет на внешний вид таблицы). Я опубликовал несколько ответов, которые используют эту технику: