我如何建立一个用于打印的网页,这样它就不会在页面上严重分开?
时间:2020-03-06 15:04:13 来源:igfitidea点击:
我有一个生成长报告的Web应用程序,需要打印它。如果仅打印页面,它将在物理页面的末尾中断。如何计算要在网页上中断的位置,以便在打印时分页与物理页对齐?
解决方案
- 分页媒体
- 分页前(MDN)
- 页内闯入(MDN)
我通常避免同时打印网页(HTML)。如果需要格式化打印,我会生成PDF或者CSV /电子表格格式,供我的客户以他们想要的任何方式打印。
我通常会生成供全球使用的打印件,这意味着各个工作场所的所有类型的设置都不同(例如,纸张大小:Legal,Letter,A4等)。我发现这是一项太大的任务,无法保证到处都有美观的输出。
使用CSSpage-break-before / after
其他方法:
- 使用JasperReports并将数据加载到报告而不是html页面中
- 结合使用带有XSL的Apache FOP将HTML(或者原始数据)转换为FOP,然后再转换为PDF
两种方法都相当广泛,因此,如果我们不想花更多的精力,可以直接跳到另一个答案...。
有一个css属性可尝试确保分页符的位置。我们可以为元素指定规则" page-break-before:always"或者" page-break-after:always",以指示中断应该在元素之前还是之后。这在所有浏览器中的支持都非常差,我不会依赖它。有关更多详细信息,请参见http://www.w3schools.com/CSS/pr_print_pageba.asp。
我们有一个系统,可以打印出选定订单的发票,
<br style="page-break-before:always;">
每张发票之间。这意味着每张发票都会在新页面上显示。
使用打印样式表也是一个好习惯
<link rel="stylesheet" href="print.css" type="text/css" media="print" />
可以隐藏/显示页面的相关区域。当有人想要实际的页面内容时,毫无意义地打印出leftnav链接等。