根据我的研究,看来我想做的事是不可能的,但是如果情况有所变化,我想检查一下是否有人想出办法。
我有一个Web应用程序,可以根据浏览器窗口中的用户选择生成打印报告。我有一个自定义的页眉和页脚,当从浏览器打印报告时,应在每个打印的页面上重复该页眉和页脚。它不是我需要的浏览器页眉和页脚,而是我生成的自定义页眉和页脚。另外,我不认为这是CSS和媒体类型的问题,但我不是CSS专家。我没有让页眉和页脚打印一次的问题,但是我不能让它们在每一页上打印。我已经读过,也许如果我使用表重新创建报告页面,然后使用表头标签和CSS,则至少可以在每个页面上获取页眉。我还没有成功,但是如果它是唯一的选择,我会再试一次。一位同事建议我在php中计算行数,并根据需要手动输出页眉和页脚。我想这是一个选择,但似乎应该有一种方法可以做到这一点,而并非“蛮力”!
另一个警告是,我必须支持IE 6,因此我怀疑我尝试过的一些CSS东西不被支持。
如果有人知道这样做的话,那就太好了!如果没有,我将不得不重新考虑自己的方法。
提前致谢!
更新(2011年12月14日)
我在此问题上取得了长足的进步,使用答案中的一些信息,我确实生成了有用的报告,但从未达到我想要的那样出色或专业。页脚距离页面底部的距离往往不够大,我不得不做很多猜测工作,并且要对要插入插入分页符的粗大文本进行“易碎”计算,我只能支持一组页面格式,以及对报告的任何更改都会导致级联的代码更改和更加脆弱的计算。总有一种情况破坏了某些报告的一部分。我们修改了要求, 现在正在使用TCPDF生成PDF格式的报告 。该文档有点不透明,需要进行一些实验,但是结果要好得多,现在报告按预期显示。我想对任何尝试通过浏览器进行HTML报告的人说,除非它们非常简单,否则请避免麻烦(就像其他人在这里告诉我的那样),并使用PDF或类似的东西。
它可以用表来完成-我知道我建议通过使用表进行布局来冒风险,但是我们在这里谈论的是IE6,它因其出色的CSS支持而闻名:-)
如果按如下方式设置CSS样式:
thead { display: table-header-group; } tfoot { display: table-footer-group; }
然后,当您创建HTML时,将您的正文呈现为:
<body> <table> <thead><tr><td>Your header goes here</td></tr></thead> <tfoot><tr><td>Your footer goes here</td></tr></tfoot> <tbody> <tr><td> Page body in here -- as long as it needs to be </td></tr> </tbody> </table> </body>
是的,它不好(表和CSS),也不理想,但是(对您来说很重要)它确实可以在IE6上运行。我无法在Firefox上进行评论,因为我还没有在Firefox上进行过测试,但它可以胜任。这还将处理不同大小的页面,不同的字体大小等,因此它应该“正常工作”。
如果只希望页眉和页脚仅出现在打印介质上,请使用@media参数执行正确的操作:
@media print { thead { display: table-header-group; } tfoot { display: table-footer-group; } } @media screen { thead { display: none; } tfoot { display: none; } }
注意 自2015年7月起,这仍然仅在Firefox和IE中有效。 如果有人强烈投票支持基于Webkit的浏览器(例如Chrome,Safari),则它们在问题跟踪器中存在长期存在的错误:
这个问题下方的评论告诉我,这已在Chrome中解决。我没有检查自己:-)