使用PhP控制打印内容

使用PhP控制打印内容,php,html,Php,Html,大家好 我有一个打印问题,所以我将解释这个问题并分享一些基本代码,但编码不是问题,问题是我使用了错误的方法,肯定有更好的方法 我的web页面是使用PhP从mySQL获取信息并将每组信息显示为一个表生成的。因此,我可能在一页上有3个表或100个表。问题是我真的需要打印这个,但是当我打印的时候,谷歌会把页面直接插入我的表格 根据需要显示的信息量,表格的高度会有所不同。 我使用javascript设置打印区域 下面您将看到我尝试使用表3预测分页符,但当表1和表2占用的页面超过一页时,它会将分页符置于表

大家好

我有一个打印问题,所以我将解释这个问题并分享一些基本代码,但编码不是问题,问题是我使用了错误的方法,肯定有更好的方法

我的web页面是使用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>

这是表1
这是表2
这是表3
对不起,我今天需要离开,但我真的希望有人能帮助解决这个问题。我明天回来看看


提前谢谢你

在实际打印之前,先计算每个表中的行数。假设页面上有许多行,以及表头所需的空间/表之间的空间

比如说

$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();
    }
}

仅仅使用PHP和HTML永远无法保证页面布局。您是否考虑过创建PDF而不是可打印的网页?PHP有非常简单但功能强大的PDF库,我更喜欢的是

您也可以总是在每个表上断开页面,以便它们每次都出现在新页面上。其次,在表本身之前而不是在表上应用该断页CSS。最后,根据浏览器的不同,还有一些额外的分页符规则。谢谢你的分页符位置建议。是否有方法在X像素之后应用分页符,或者如果在表格期间,则在表格之前应用分页符。问题是我的表格80%的时间只有四分之一页。如果我理解正确,您需要的是
内部分页符:避免
。但是,对AFAIK浏览器的支持不是很好。请看:我也同意这一点,尽管你永远不知道第100页的内存问题+