【问题标题】:table borders disappearing in tcpdf表格边框在 tcpdf 中消失
【发布时间】:2013-02-26 18:57:45
【问题描述】:

我正在设置 tcpdf 为客户即时生成发票,但是当我添加图像时,边框从我的表格中消失了。代码如下:

/*
if ($status == "Paid") {
    $pdf->Image("/wp-content/themes/Feather/images/Paid.jpg", 10, 60, 190, '', '', '', 'T', false, "300", '', false, false, 0, false, false, false);
} elseif ($status == "Overdue") {
     $pdf->Image("/wp-content/themes/Feather/images/Overdue.jpg", 10, 60, 190, '', '', '', 'T', false, "300", '', false, false, 0, false, false, false);
} elseif ($status == "Cancelled") {
     $pdf->Image("/wp-content/themes/Feather/images/Void.jpg", 10, 60, 190, '', '', '', 'T', false, "300", '', false, false, 0, false, false, false);
}
*/
$pdf->SetXY($x=20, $y=30);
$pdf->writeHTML($html, true, false, true, false, '');
$pdf->lastPage();

这是我正在使用的 HTML:

$html = $html . '
<br/><br/><br/>
<table width="600px" cellspacing="1" cellpadding="4" border="1">
<tr>
    <th width="200px">Product</th>
    <th width="65px">Code</th>
    <th width="65px">Quantity</th>
    <th width="65px">Unit Price</th>
    <th width="65">VAT Rate</th>
    <th width="65">VAT Amount</th>
    <th width="65">Line Total</th>
</tr>';
foreach ($inv_lines as $inv_line) {
$html = $html .
        '<tr>
        <td>' . $inv_line['item_desc'] . '</td>
        <td>' . $inv_line['item_no'] . '</td>
        <td>' . $inv_line['quantity'] . '</td>
        <td>' . $inv_line['unit_price'] . '</td>
        <td>' . $inv_line['vat_rate'] . '</td>
        <td>' . ($inv_line['quantity'] * $inv_line['vat_rate'] * $inv_line['unit_price'] * 0.01) . '</td>
        <td>' . $inv_line['line_total'] . '</td>
    </tr>';

使用上面的代码,表格看起来很好,但是一旦我取消注释图像位,图像就会出现,但表格边框会消失。我尝试为单个单元格添加内联边框,但这没有任何影响。

有人有什么想法吗?

【问题讨论】:

    标签: tcpdf


    【解决方案1】:

    首先,确保您始终包含结束表标记。 TCPDF 的 html 解析器可能对开始和结束标记很挑剔。 (我之所以这么说,是因为问题中缺少它。)它依赖于正确的标记才能正常运行。

    现在我不能通过查看您的坐标来确定,但是表格是否与图像重叠?如果是这样,并且您希望在图像顶部绘制边框,则需要在绘制图像后调用setPageMark。如果不这样做,无论您调用 Image 和 writeHTML 的顺序如何,边框都将绘制在图像下方。

    <?php
    //In my test PDF I had to do something like this as some of my borders
    //were disappearing underneath my test image.
    $pdf->Image(...);
    $pdf->setPageMark();
    $pdf->setXY(...)
    $pdf->writeHTML(...);
    

    如果边框仍然不存在,那不是上述帮助,您可能想在放置图像后尝试设置绘制颜色。我不确定这是否会做任何事情,但值得一试。

    当然,请确保您使用的是更新版本的 TCPDF,根据您的版本,可能会修复边框渲染。

    【讨论】:

    • 谢谢 EPB - 添加 $pdf-setPageMark() 修复它!
    • 是的,这是我的问题,我所有的代码我都忘了在最后写“”。
    • 我遇到了类似的问题,但据我所知没有图像。只是一个我想打印出来的表格,里面有值,我叠加在现有的 PDF 上。我看到表格边框闪烁,然后当它消失时,加载 PDF,然后加载表格中的值,但它们周围没有表格边框可见。我有 ,我尝试将 setPageMark() 放在不同的地方,但到目前为止没有帮助。
    • 抱歉,我不知道如何将一个 PDF 分层放在另一个上。我看到你已经发布了一个问题,如果我发现了什么,我会在那里发布答案。
    • 谢谢。这解决了我的问题。我没有使用 $pdf->Image() 而是加载包含图像的模板
    【解决方案2】:

    始终使用"1"(双引号)而不是单引号border='1' 作为表格边框值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-11
      • 2012-03-28
      • 1970-01-01
      • 2013-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多