You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

dompdf长文本分页失效问题求助

dompdf长文本分页失效解决方案

针对表格内长文本无法自动分页的问题,可通过调整样式和布局规则修复,具体步骤如下:

一、修复表格布局冲突

  1. 移除表头<th>上的overflow: hidden; text-overflow: ellipsis;样式,这类规则会强制截断文本,阻止自动分页。
  2. 调整列宽比例,确保总和不超过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 20:15:17