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

FPDF HTML表格单元格文本换行失效,如何实现多值分行显示?

问题

我正在使用FPDF库的HTML表格类,该类支持通过table、tr、td标签创建表格。我希望在同一HTML表格单元格中分行显示多个值,尝试使用<br>标签和\n转义字符均无效。

我的代码如下:

$html = "
<table border='1'>
<tr>
<td width='240' height='90'>$detail[name] $detail[vase] $detail[quality]</td>
<td width='70' height='90'>$logistic_date</td>
<td width='70' height='90'>$detail[lot]</td>
<td width='60' height='90'>$warehouse</td>
<td width='220' height='90'>$detail[note]</td>
<td width='50' height='90'>$detail[qxb_def]</td>
<td width='50' height='90'>$detail[quantity_def]</td>
</tr>
</table>";

$pdf->WriteHTML($html);
}

$pdf->Output();

我需要实现的效果是在单元格内分行显示三个值,示例如下:

<td>
$detail[name]
$detail[vase]
$detail[quality]
</td>
解决方案

针对FPDF HTML表格类的换行问题,可尝试以下几种可行方案:

  • 正确使用<br>标签(规范字符串拼接)
    PHP双引号字符串的变量解析可能干扰HTML标签识别,改用字符串拼接或单引号包裹HTML片段,确保<br>标签被解析类正确识别:

    // 方案1:双引号内用花括号包裹数组变量,直接插入<br>
    $html = "
    <table border='1'>
    <tr>
    <td width='240' height='90'>{$detail['name']}<br>{$detail['vase']}<br>{$detail['quality']}</td>
    <td width='70' height='90'>$logistic_date</td>
    <td width='70' height='90'>{$detail['lot']}</td>
    <td width='60' height='90'>$warehouse</td>
    <td width='220' height='90'>{$detail['note']}</td>
    <td width='50' height='90'>{$detail['qxb_def']}</td>
    <td width='50' height='90'>{$detail['quantity_def']}</td>
    </tr>
    </table>";
    
    // 方案2:单引号包裹HTML,用字符串拼接插入变量
    $html = '<table border="1">
    <tr>
    <td width="240" height="90">' . $detail['name'] . '<br>' . $detail['vase'] . '<br>' . $detail['quality'] . '</td>
    <td width="70" height="90">' . $logistic_date . '</td>
    <td width="70" height="90">' . $detail['lot'] . '</td>
    <td width="60" height="90">' . $warehouse . '</td>
    <td width="220" height="90">' . $detail['note'] . '</td>
    <td width="50" height="90">' . $detail['qxb_def'] . '</td>
    <td width="50" height="90">' . $detail['quantity_def'] . '</td>
    </tr>
    </table>';
    
  • 改用FPDF原生MultiCell方法
    如果HTML解析类的换行始终失效,可以放弃HTML表格,直接用FPDF的坐标定位+MultiCell手动绘制单元格内容,MultiCell天然支持换行:

    // 示例:手动绘制表格单元格,用MultiCell实现分行
    $pdf->SetXY(10, 10); // 设置单元格起始坐标
    $pdf->MultiCell(240, 30, $detail['name'] . "\n" . $detail['vase'] . "\n" . $detail['quality'], 1, 'L');
    // 依次绘制其他单元格,需手动计算每个单元格的XY坐标和尺寸
    
  • 更新FPDF HTML扩展类
    旧版本的FPDF HTML解析类对<br>等标签支持不完善,确认你使用的是最新版的HTML扩展组件(如fpdf_html或适配FPDF的HTML解析类),更新后可能解决标签识别问题。

内容的提问来源于stack exchange,提问作者Sabino Sibillano

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:11:03