В итоге я следовал подходу @ vicenteherrera с некоторыми изменениями (которые, возможно, являются специфичными для начальной загрузки 3).
В принципе; мы не можем разбить tr
с или td
с, потому что они не являются элементами уровня блока. Таким образом, мы встраиваем div
в каждый и применяем наши page-break-*
правила против div
. Во-вторых, мы добавляем некоторые отступы к вершине каждого из этих элементов, чтобы компенсировать любые артефакты моделирования.
<style>
@media print {
/* avoid cutting tr's in half */
th div, td div {
margin-top:-8px;
padding-top:8px;
page-break-inside:avoid;
}
}
</style>
<script>
$(document).ready(function(){
// Wrap each tr and td's content within a div
// (todo: add logic so we only do this when printing)
$("table tbody th, table tbody td").wrapInner("<div></div>");
})
</script>
Необходимы корректировки полей и отступов, чтобы компенсировать какое-то дрожание, которое было введено (по моему предположению - из начальной загрузки). Я не уверен, что представляю какое-либо новое решение из других ответов на этот вопрос, но я думаю, что это может кому-то помочь.