如何将数组中各值单独以PDF格式打印?(含PHP代码及列对齐问题)
解决PDF打印中金额列对齐问题
你的核心问题是表格行结构不匹配:原来的代码把所有左侧描述行单独生成<tr>,再把所有金额<td>堆在一起,导致每行的描述和金额无法一一对应,自然错位。
重构PHP代码(修复结构问题)
把两个循环合并成一个,每次循环生成包含「描述列」和「金额列」的完整表格行,这样每行的内容和金额就会对应对齐:
$ps_table_rows = ""; foreach ($this->submissionPSDirectCost as $ps) { // 拼接左侧描述内容 $ps_desc = implode(" ", [ "<b>" . ($ps->ps_type == 0 ? "Salary" : "Honoraria") . "</b>", "<br>", $ps->ps_quantity, $ps->title, "at", $ps->salary, "/Month x", $ps->ps_num_duration, $ps->mode_payment, ]); // 生成完整的表格行:左侧描述列 + 右侧金额列 $ps_table_rows .= "<tr> <td colspan=\"1\">{$ps_desc}</td> <td colspan=\"1\">{$ps->amount}</td> </tr>"; }
修改HTML调用
现在直接在表格中输出重构后的$ps_table_rows即可:
<table> <!-- 表头部分,示例:<tr><th>Item Details</th><th>Total approved budget</th></tr> --> <?php echo $ps_table_rows; ?> </table>
额外PDF排版优化建议
为了让PDF里的表格更规整,可以给表格添加基础样式:
table { width: 100%; border-collapse: collapse; } td, th { border: 1px solid #ddd; padding: 8px; text-align: left; } th { background-color: #f2f2f2; }
内容的提问来源于stack exchange,提问作者pal
相关产品推荐
相关产品推荐

