如果元素超过页面高度,dompdf 分页符?
Posted
技术标签:
【中文标题】如果元素超过页面高度,dompdf 分页符?【英文标题】:dompdf Page break if element is exceeding page height? 【发布时间】:2012-02-02 03:43:12 【问题描述】:在 dompdf 中进行分页的最佳方法是什么?
我已经查看了 here 的 page-break-before css 属性,但是当我这样做时它不起作用:
table page-break-before:auto;
页面仍然在我的桌子中间中断。
是否可以设置我的 html/css 以便在元素超出页面高度时页面将在元素之前中断?
理想情况下,我想将我的 html 划分为 div 部分,以便每个部分在超出当前页面高度时从新页面开始。
【问题讨论】:
【参考方案1】:使用page-break-inside: auto;
基本上是对 dompdf 说“做你通常在分页时会做的事情。”
要在表格之前/之后强制分页,您可以使用 page-break-before: always;
/ page-break-after: always;
。
要让 dompdf 避免破坏元素,您可以使用 page-break-inside: avoid;
。
【讨论】:
page-break-inside:avoid;
使表格中的图像消失,并且在我的情况下使用 colspan=2
时出现问题
提醒一下:我尝试在<tbody/>
和<table/>
标签上使用page-break-inside: avoid
,以及在<tr/>
上使用page-break-after: avoid
——两者都给了我一些额外的空白页。我的解决方案是使用page-break-inside: avoid
将表格包装在<div/>
中。
请注意,这不适用于 tds 中的 rowspan,我最终切换到 mpdf,因为它是一个非常简单(但很长)的表
page-break-inside: auto;
不适用于大于页面的元素不幸的是......请参阅:github.com/dompdf/dompdf/issues/653 和 github.com/dompdf/dompdf/issues/809
这仍然是一个有效的修复。如果不切断第一页之后的内容,我无法将我的大表格转换为 PDF。 css 规则 page-break-after: always;救了我的但是。每次内容接近页面高度时,我都会内联添加该规则。非常感谢这个小技巧!【参考方案2】:
这里有个技巧:将您不想跨多个页面打印的<table>
放在另一个<table>
中。
【讨论】:
或放入 【参考方案3】:您可以使用this online debugger 进行快速测试 - 经过几天的测试,我终于发现了分页符和边距问题。
附记:是否有人在开发/生产环境中安装了调试环境,并可以向我指出任何文档或教程?
【讨论】:
检查此调试器上可能存在的问题是有意义的。例如,CSS 的一个小变化可能会影响很大。特别是 dompdflog 标签非常方便。 感谢调试器链接,它非常很有用。【参考方案4】:就我而言,这是因为我在另一张桌子中使用了一张桌子。 喜欢,
<table>
<tr>
<td>
<table></table>
</td>
</tr>
</table>
所以我所做的就是把桌子拿出来。解决了我的问题。
【讨论】:
【参考方案5】://在开始for循环之前先赋值一个变量,并在for循环内部设置后自增运算符。其次,在单页数据显示项条件下使用。
<?php $n=1 ?>
@foreach ($purchases as $key=> $purchase)
<tr >
<td> $key + 1 </td>
<td> $purchase->supplier->company_name ?
$purchase->supplier->company_name : "" </td>
<td> "S-".$purchase->id </td>
<td> salte_items($purchase->purchaseItems) </td>
<td> $purchase->created_at->format('d-m-Y') </td>
<td> intval($purchase->total) </td>
</tr>
@if ( $n % 25 == 0 )
<div style="page-break-before:always;"> </div>
@endif
<?php $n++ ?>
@endforeach
【讨论】:
请添加cmets并解释你的代码 您可以通过编辑您的答案将您的评论添加到您的代码中以上是关于如果元素超过页面高度,dompdf 分页符?的主要内容,如果未能解决你的问题,请参考以下文章