Tôi đã kết thúc theo cách tiếp cận của @ Abbeyenteherrera, với một số điều chỉnh (có thể là bootstrap 3 cụ thể).
Về cơ bản; chúng tôi không thể phá vỡ tr
hoặc td
vì chúng không phải là các yếu tố cấp khối. Vì vậy, chúng tôi nhúng div
s vào từng cái, và áp dụng các page-break-*
quy tắc của chúng tôi chống lại div
. Thứ hai; chúng tôi thêm một số phần đệm vào đầu của mỗi div này, để bù cho bất kỳ tạo tác tạo kiểu nào.
<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>
Các điều chỉnh lề và phần đệm là cần thiết để bù đắp một số loại jitter đã được giới thiệu (theo phỏng đoán của tôi - từ bootstrap). Tôi không chắc chắn rằng tôi đang trình bày bất kỳ giải pháp mới nào từ các câu trả lời khác cho câu hỏi này, nhưng tôi nghĩ có lẽ điều này sẽ giúp được ai đó.
<thead>
vào bảng của bạn với css sauthead {display: table-header-group; }
để in tiêu đề bảng trên tất cả các trang tiếp theo (hữu ích cho các bảng dữ liệu loooooong).