Terminé siguiendo el enfoque de @ vicenteherrera, con algunos ajustes (que posiblemente sean específicos de bootstrap 3).
Básicamente; no podemos romper tr
s, o td
s porque no son elementos de nivel de bloque. Así que incorporamos div
s en cada uno y aplicamos nuestras page-break-*
reglas contra el div
. En segundo lugar; agregamos un poco de relleno en la parte superior de cada uno de estos divs, para compensar los artefactos de estilo.
<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>
Los ajustes de margen y relleno fueron necesarios para compensar algún tipo de inquietud que se estaba introduciendo (supongo, desde bootstrap). No estoy seguro de presentar una nueva solución de las otras respuestas a esta pregunta, pero creo que quizás esto ayude a alguien.
<thead>
a su tabla con el siguiente CSSthead {display: table-header-group; }
para imprimir el encabezado de la tabla en todas las páginas posteriores (útil para taaaaaaaaaaaa tablas de datos).