有没有办法在每页上打印网页页眉/页脚?

根据我的研究,我想做的似乎是不可能的,但万一发生了变化,我想看看是否有人想出了这样做的方法

我有一个web应用程序,可以根据浏览器窗口中的用户选择生成打印报告。我有一个自定义页眉和页脚,当从浏览器打印报告时,应该在每个打印页面上重复。我需要的不是浏览器的页眉和页脚,而是我生成的自定义页眉和页脚。另外,我不认为这是CSS和媒体类型的问题,但我不是CSS专家。我没有问题让页眉和页脚打印一次,但我不能让它们打印在每一页上。我已经读到,如果我使用表格重新创建我的报告页面,然后使用表头标记和CSS,那么至少可以在每个页面上获得表头。我还没有成功,但如果这是唯一的选择,我会再试一次。一位同事建议我在php中计算行数,并根据需要手动输出页眉和页脚。我想这是一种选择,但似乎应该有一种方式来做到这一点,而不是“暴力”

另一个警告是,我必须支持IE6,所以我怀疑我尝试过的一些CSS东西不受支持

如果有人知道怎么做,那就太好了!如果没有,我将不得不重新考虑我的方法

提前谢谢

更新(2011年12月14日)

我在这个问题上取得了相当大的进展,并且使用了来自答案的一些信息,我确实制作了一些有用的报告,但从来没有像我想要的那样好或专业。页脚与页面底部的距离往往不够近,我不得不做大量猜测工作和“脆弱”的计算来决定插入分页符,我只能支持一组受限的页面格式,对报告的任何更改都会导致一连串的代码更改和更脆弱的计算。总有一种情况会破坏某些报告的某些部分。我们重新审查了需求,现在正在使用TCPDF生成PDF格式的报告。文档有点不透明,需要一些实验,但结果要好得多,现在的报告看起来应该是这样的。我想对任何试图从浏览器中生成HTML报告的人说,除非这些报告非常简单,否则请避免沮丧(正如其他人在这里告诉我的),使用PDF或类似的工具

这可以通过表格来完成——我知道我会冒着被否决的风险,建议使用表格进行布局——但我们这里讨论的是IE6,它并不以其出色的CSS支持而闻名:-)

如果按如下方式设置CSS样式:

thead{display:table header group;}
tfoot{显示:表页脚组;}

然后,在创建HTML时,将身体呈现为:

<车身>
<表>
<thead&gt&书信电报;tr&gt&书信电报;td>您的标题位于此处&lt/td&gt&lt/tr&gt&lt/thead>
<tfoot&gt&书信电报;tr&gt&书信电报;td>您的页脚位于此处&lt/td&gt&lt/tr&gt&lt/tfoot>
<t车身>
<tr&gt&书信电报;td>
页面主体在这里——只要它需要
&lt/td&gt&lt/tr>
&lt/t车身>
&lt/表>
&lt/车身>

是的,它不好(表与CSS),不理想,但(对你来说很重要)它在IE6上确实有效。我不能评论Firefox,因为我还没有在那里测试过它,但它应该可以完成这项工作。这也将处理不同大小的页面,不同的字体大小等,所以它应该“正常工作”

如果希望页眉和页脚仅显示在打印介质上,请使用@media参数执行正确操作:

@媒体打印{
thead{display:表头组;}
tfoot{显示:表页脚组;}
}
@媒体屏幕{
AD{显示:无;}
tfoot{display:none;}
}

注意
截至2015年7月,这仍将只适用于Firefox和IE。基于Webkit的浏览器(参见Chrome、Safari)的问题跟踪程序中存在长期存在的漏洞,如果有人强烈要求对其进行投票:

这个问题下面的评论告诉我,这个问题现在在Chrome中得到了解决。我还没有检查自己:-)

Chrome的原始缺陷(供参考)是:

  • https://bugs.webkit.org/show_bug.cgi?id=17205
  • https://code.google.com/p/chromium/issues/detail?id=24826
  • https://code.google.com/p/chromium/issues/detail?id=99124

发表评论