大家好!
我有一个打印问题,所以我将解释这个问题,并分享一些基本的代码,但编码不是问题,问题是我使用了错误的方法,肯定有更好的方法。
我的网页是通过使用PhP从mySQL获取信息并将每组信息显示为表格而生成的。所以我可能在一页上有3个表,或者100个表。问题是,我真的需要打印这个,但当我这样做时,谷歌将分页符直接放入我的表格中。
根据我需要显示多少信息,表格的高度会有所不同。我使用javascript来设置打印区域。
下面你会看到我试着用表格3预测分页符,但是当表格1和2超过一页时,它会把分页符放在表格2中,然后页面2的其余部分是空的,表格3只在页面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>很抱歉,我需要离开一天,但我真的希望有人能帮助解决这个问题。我明天会再来看看。
提前谢谢你!
发布于 2014-02-03 18:34:57
在实际打印之前,先计算每个表中的行数。假设一页上可以容纳的行数,以及表头/表间所需的空间。
举个例子
$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();
}
}发布于 2014-02-03 18:39:22
仅仅使用PHP和HTML是无法保证页面布局的。您是否考虑过创建PDF而不是可打印的网页?有一些非常简单但功能强大的PDF库可用于PHP,我首选的是FPDF。
https://stackoverflow.com/questions/21524334
复制相似问题