【发布时间】:2023-03-26 15:23:01
【问题描述】:
我正在遍历一个数组并构建表格。然后将 HTML 发送到 DOMPDF。但是,如果 HTML 格式错误,DOMPDF 将不会创建 PDF。我认为这就是我的情况。这是我的循环:
<?php foreach($credits as $credit) : ?>
<?php if($credit['credit_type'] == "short") : ?>
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="margin:0px 0px 15px 0px;">
<tr>
<td><strong><?php echo $credit['category_title']; ?></strong></td>
</tr>
<tr>
<td><?php echo $credit['credit_heading']; ?></td>
</tr>
</table>
<?php endif; ?>
<?php if($credit['credit_type'] == "long") : ?>
<?php if($credit['category_title'] != $oldvalue) : ?>
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="margin:0px 0px 15px 0px;">
<tbody>
<?php endif; ?>
<tr>
<?php if($credit['category_title'] != $oldvalue) : ?>
<td width="25%"><strong><?php echo trim($credit['category_title']); ?></strong></td>
<td width="25%"><strong>Title</strong></td>
<td width="25%"><strong>Role</strong></td>
<td width="25%"><strong>Director</strong></td>
<?php endif; ?>
</tr>
<tr>
<td width="25%"><?php echo $credit['credit_heading'];?></td>
<td width="25%"><?php echo $credit['credit_title']; ?></td>
<td width="25%"><?php echo $credit['credit_role']; ?></td>
<td width="25%"><?php echo $credit['credit_director']; ?></td>
</tr>
<?php if($credit['category_title'] != $oldvalue) : ?>
</tbody>
</table>
<?php endif; ?>
<?php $oldvalue = $credit['category_title']; ?>
<?php endif; ?>
<?php endforeach; ?>
我这辈子都无法弄清楚我没有关闭哪个标签。如果有人能提供一些见解,那就太棒了!
具体来说,循环正在创建显示一些标题的行,然后在类别标题发生变化时吐出更多行。
【问题讨论】:
-
最简单的方法就是使用
ob_start()和ob_end()获取整个HTML,但是为什么您的PDF 库不能使用“格式错误的HTML”...? -
那会做什么?我将如何使用它?
-
您使用的是哪个版本的 dompdf? dompdf 可以处理格式错误的 HTML,尽管有一些格式问题会破坏渲染。另外,如果 HTML 在结构上不正确,则呈现可能不是您所期望的。
-
此外,从 dompdf 0.6.0(目前为 beta 2)开始,您可以调用 $dompdf->output_html() 来查看 HTML dompdf 试图解析的内容。但我同意 leo 的观点,如果你需要检查你的 HTML,你应该在将它传递给 dompdf 之前进行。
标签: php html loops foreach dompdf