dompdf长文本分页失效问题求助
dompdf长文本分页失效解决方案
针对表格内长文本无法自动分页的问题,可通过调整样式和布局规则修复,具体步骤如下:
一、修复表格布局冲突
- 移除表头
<th>上的overflow: hidden; text-overflow: ellipsis;样式,这类规则会强制截断文本,阻止自动分页。 - 调整列宽比例,确保总和不超过100%,避免
table-layout: fixed导致布局异常。示例比例:- 第一列(No):10%
- 第二列(Diagnosa Keperawatan):25%
- 第三列(Tujuan):35%
- 第四列(Intervensi):30%
二、启用表格分页支持
添加dompdf专属的分页样式,允许表格内容跨页显示:
table { table-layout: fixed; width: 100%; page-break-inside: auto; } thead { display: table-header-group; } /* 表头自动在每页顶部重复 */ tr { page-break-inside: avoid; page-break-after: auto; } /* 避免整行被拆分 */ td { page-break-inside: auto; vertical-align: top; } /* 允许单元格内内容分页 */
三、调整内容块样式
给单元格内的段落标签添加分页支持,确保长文本可以自动换行分页:
td p { page-break-inside: auto; margin: 0.3em 0; }
修改后的完整代码
<h6 style="background: #cdcbcb; font-size: 13px; margin: 0px; padding:8px;">RENCANA KEPERAWATAN</h6> <style> table { table-layout: fixed; width: 100%; page-break-inside: auto; } thead { display: table-header-group; } th:nth-child(1) { width: 10%; text-align: center; } th:nth-child(2) { width: 25%; text-align: center; } th:nth-child(3) { width: 35%; text-align: center; } th:nth-child(4) { width: 30%; text-align: center; } tr { page-break-inside: avoid; page-break-after: auto; } td { page-break-inside: auto; vertical-align: top; } td p { page-break-inside: auto; margin: 0.3em 0; } </style> <table class='table table-bordered'> <thead> <tr> <th>No</th> <th>Diagnosa Keperawatan</th> <th>Tujuan</th> <th>Intervensi</th> </tr> </thead> <tbody> <?php $no=1; ?> @foreach ($data_rencanakeperawatan as $item) <tr> <td style="text-align: center">{{$no}}</td> <td>{{$item->diagnosa_keperawatan_rencana}}</td> <td>Setelah dilakukan intervensi keperawatan selama {{ $item->jam }} jam maka {{ $item->keterangan }} dengan kriteria hasil : <?php $data_kriteria=DB::table('tb_kriteria')->where('id_rencanakeperawatan', $item->id_rencanakeperawatan)->get(); foreach ($data_kriteria as $value1) { ?> <p>• {{$value1->detail_luarankeperawatan}} ({{$value1->skor_kriteria}})</p> <?php } ?> </td> <td> <?php $data_intervensi=DB::table('tb_intervensirencana') ->join('m_detailintervensi', 'tb_intervensirencana.id_detailintervensi', '=', 'm_detailintervensi.id_detailintervensi') ->where('tb_intervensirencana.id_rencanakeperawatan', $item->id_rencanakeperawatan)->get(); foreach ($data_intervensi as $value2) { ?> <b>• {{$value2->keterangan}}</b><br> {{$value2->dataintervensi}}<br> <?php } ?> </td> </tr> <?php $no++; ?> @endforeach </tbody> </table>
额外提示
- 确保使用最新版本的dompdf,旧版本对表格分页的支持存在缺陷。
- 避免在单元格内使用绝对定位、浮动元素,这类元素会干扰dompdf的分页逻辑。
- 若单个单元格内容过长到跨多页,可手动插入分页符
<div style="page-break-after: always;"></div>分割内容,但优先依赖自动分页。
内容的提问来源于stack exchange,提问作者Sukmo Abadii
相关产品推荐
相关产品推荐

