如何避免跨页面拆分 HTML 表格

Posted

技术标签:

【中文标题】如何避免跨页面拆分 HTML 表格【英文标题】:How to avoid splitting an HTML table across pages 【发布时间】:2016-05-08 17:27:02 【问题描述】:

请原谅我的英语。

我正在打印一份 pdf 格式的大型报告,其中包括一些表格(一个接一个的表格)。为此,我首先以 html 格式生成报告,然后使用 dompdf 将其传递给 pdf 格式

这是我一个接一个地打印表格的方式:

<div>
  <table>
  -----
  </table>
</div>

<div>
  <table>
  -----
  </table>
</div>

This is the way in which printed tables when there is a page break

问题是当有分页符时,表格行被拆分。我想避免它。

我尝试使用 CSS 打印属性,但它不起作用,在其他情况下,page-break-before: always; 在不同页面上打印我的报告的每个表格。

<style type="text/css">
table  page-break-inside:auto 
tr     page-break-inside:avoid; page-break-after:auto 
thead  display:table-header-group 
tfoot  display:table-footer-group 
</style>

因为我只能在必要时在报告中的所有表格中强制分页。

请帮忙。

【问题讨论】:

dompdf 当前无法识别表格元素上的分页指令。但是您需要澄清这个问题,因为 dompdf 也不真正支持跨页面破坏单元格内容。默认情况下,如果表格单元格无法容纳在页面上,则将整行移至下一页。 【参考方案1】:

检查此链接: Link1Link2Link3

有很多与您的问题相关的答案,因此请先尝试此答案。 你可以用 CSS 试试这个:

<table class="print-friendly">
 <!-- The rest of your table here -->
</table>

<style>
    table.print-friendly tr td, table.print-friendly tr th 
        page-break-inside: avoid;
    
</style>

大多数 CSS 规则并不直接适用于 &lt;tr&gt; 标记,因为正是您在上面指出的 - 它们具有独特的 display 样式,它不允许这些 CSS 规则。但是,它们中的&lt;td&gt;&lt;th&gt; 标签通常 允许这种规范-您可以轻松地将此类规则应用于所有子-&lt;tr&gt;&lt;td&gt;使用 CSS 如上所示。

【讨论】:

我正在尝试所有答案,但是当我转换为 DOMPDF 时,由于某种原因不起作用!!! 这是不同答案的复制粘贴。【参考方案2】:

@sebastianpe93 尝试在印刷媒体查询中添加您的样式。应该可以的

【讨论】:

以上是关于如何避免跨页面拆分 HTML 表格的主要内容,如果未能解决你的问题,请参考以下文章

TCPDF 在多个页面上拆分 html 表

内部分页:避免不工作

跨页面拖放div?

如何在下一页打印PDF后拆分表格行并删除标题内容颜色?

JS实践遇到问题,多个变量多个页面如何避免出错

过滤、排序和拆分页面方法的最快方法