大家好日子
我有打印问题所以我要解释问题并分享一些基本代码,但编码不是问题,问题是我使用了错误的方法必须有更好的方法。
我的网页是通过使用PhP从mySQL获取信息并将每组信息显示为表格而生成的。所以我可能在1页或100个表上有3个表。问题是我真的需要打印这个,但是当我谷歌把分页直接放在我的桌子上时。
表格的高度取决于我需要显示多少信息。 我使用javascript来设置打印区域。
下面你会看到我尝试使用表3来预测分页符,但是当表1和2占用超过一页时,它会突破表2,然后第2页的其余部分为空,表3仅在在这种情况下,我需要将它放在表2之前,以便在第2页上打印整个表格。
<div id='print_area'>
<table>
this is table 1
</table>
<table>
this is table 2
</table>
<table style='page-break-before:always'>
this is table 3
</table>
</div>
抱歉,我需要离开这一天,但我真的希望有人可以帮助解决这个问题。我明天会回来的。
提前谢谢!
答案 0 :(得分:1)
在实际打印之前计算每个表中的行数。假设适合页面的行数和表格之间的表格标题/空格所需的空间。
所以例如
$rows_between_tables=3
$rows_needed_for_header=2
$rows_used_on_this_page=0
$rows_per_page=72 # (depends on font size etc.)
while (there_is_another_table_to_print()) {
$rows_after_this_table = $rows_used_on_this_page +
$rows_needed_for_header + $rows_between_tables +
rows_for_next_table()
if ($rows_after_this_table > $rows_per_page) {
$rows_used_on_this_page=$rows_needed_for_header + rows_for_next_table()
print_next_table_with_page_break_in_front_of_it();
}
else {
$rows_used_on_this_page=$rows_after_this_table;
print_next_table_no_page_break();
}
}
答案 1 :(得分:1)
您永远无法保证只使用PHP和HTML来保证页面布局。您是否考虑过创建PDF而不是可打印的网页? PHP有一些非常简单但功能强大的PDF库,我首选的是FPDF。