使用PhP来控制什么是打印

时间:2014-02-03 10:05:21

标签: php html

大家好日子

我有打印问题所以我要解释问题并分享一些基本代码,但编码不是问题,问题是我使用了错误的方法必须有更好的方法。

我的网页是通过使用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>

抱歉,我需要离开这一天,但我真的希望有人可以帮助解决这个问题。我明天会回来的。

提前谢谢!

2 个答案:

答案 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