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
相关产品推荐
相关产品推荐

