表格边框在tcpdf中消失

时间:2013-02-26 18:57:46

标签: tcpdf

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

上面的代码显示正常,但是一旦取消注释图像位,图像就会出现,但表格边框会消失。我已经尝试为单个单元格添加内联边框,但这不会产生任何影响。

有没有人有任何想法?

2 个答案:

答案 0 :(得分:15)

首先,绝对确定您始终包含结束表标签。 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的更新版本,具体取决于您的版本,可能会有边框渲染修复。

答案 1 :(得分:0)

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