【问题标题】:How to create TCPDF HTML table with variable row paddings如何使用可变行填充创建 TCPDF HTML 表格
【发布时间】:2013-01-10 23:25:55
【问题描述】:

我正在尝试在 TCPDF 中创建一个 HTML 表格,其中几行之间的空间较大(填充),而其他的填充较小。

$html = '<table border="0" cellpadding="6">
        <tr>
            <td style="width="52%">' . lang('ticket_name') . '</td>
            <td style="width="18%">' . lang('ticket_price') . '</td>
            <td style="width="12%">' . lang('quantity') . '</td>
            <td style="width="18%">' . lang('total') . '</td>
        </tr>
    <tr>
            <td style="padding: 10px">' . $item['name'] . '</td>
            <td style="padding: 10px">' . $item['unit_price'] . '</td>
            <td style="padding: 10px">' . $item['quantity'] . '</td>
            <td style="padding: 10px">' . $item['row_total'] . '</td>
        </tr>
        <tr>
            <td style="text-align:right" colspan="3">' . lang('price_basis') . ': </td>
            <td>' . $totals['total_before_tax'] . '</td>
        </tr>
            <tr>
            <td style="text-align:right" colspan="3">' . 'Ukupni popust' . ': </td>
            <td>' . $totals['total_discount'] . '</td>
        </tr>
            <tr>
            <td style="text-align:right" colspan="3">' . 'Sveukupno' . ': </td>
            <td>' . $totals['grand_total'] . '</td>
        </tr>
    </table>';
$pdf->writeHTML($html, $linebreak = true, $fill = false, $reseth = true, $cell = false, $align = '');

如您所见,我在 table 标记中有一个 cellpadding 属性,它工作正常,但我想在第二行有不同的填充。 填充样式显然不适用于“td”或“tr”标签。

我知道这可以通过两个具有不同单元格填充的单独表格来完成,但这似乎非常错误。一定有别的办法。

【问题讨论】:

  • @Deadlock 当直接内联 CSS 不起作用时,如何使用 CSS 类进行样式设置?我尝试将 style="padding:10px" 放在 和 上,但都没有工作。
  • 你的代码没有问题,可能TCPDF不支持这个...

标签: php css report tcpdf


【解决方案1】:

TCPPDF 不支持所有 CSS 属性,例如 TCPDF 不支持 paddingmargin 属性。 您可以通过内表模拟填充:

<tr>
 <td>
  <table><tr>
   <td style="width:10px;"></td>
   <td>' . $item['name'] . '</td>
   <td style="width:10px;"></td>
  </tr></table>
 </td>
</tr>

或者您可以为每一行使用具有不同cellpadding 的不同表:

<table border="0" cellpadding="6">
 <tr>
  <td>' . lang('ticket_name') . '</td>
  <td>' . lang('ticket_price') . '</td>
  <td>' . lang('quantity') . '</td>
  <td>' . lang('total') . '</td>
 </tr>
</table>
<table border="0" cellpadding="5">
 <tr>
  <td>' . $item['name'] . '</td>
  <td>' . $item['unit_price'] . '</td>
  <td>' . $item['quantity'] . '</td>
  <td>' . $item['row_total'] . '</td>
 </tr>
</table>

【讨论】:

    【解决方案2】:

    这里的另一个答案提供了 all round 填充,但是如果您需要在顶部或底部填充,解决方案是使用具有设定高度/宽度的透明 PNG。

    private function padding($width,$height){
        return '<img src="/imagepath/images/transparent.png" width="'.$width.'" height="'.$height.'">'; 
    }
    

    然后在需要填充的TD中:

    $this-&gt;padding(82,11)

    因此,您需要在表格单元格上定义宽度。这可能也适用于左/右填充,但还没有尝试过。

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签