5

我正在设置 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>';

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

有没有人有任何想法?

4

2 回答 2

17

首先,绝对确定你总是包含结束表标签。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,根据您的版本,可能会有边框渲染修复。

于 2013-02-27T06:59:18.170 回答
2

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

于 2018-07-04T05:26:26.917 回答