在tcpdf表中从db生成数据

时间:2017-09-02 08:41:32

标签: php pdf tcpdf

我正在尝试使用tcpdf生成包含数据库值的pdf。

我有一个获取此类数据的功能

function fetch_data()
{
$output = '';  
    include('../connection.php');
        // Colors, line width and bold font
        //My sql
        $sql =""; 
$query = mysqli_query($con, $sql) or die (mysqli_error($con));  
$total_amt = 0;
$tax_amt = 0;
while($row = mysqli_fetch_array($query)) { 
$output .= '<tr>  
                          <td style="border-bottom:1px thin #666; font-size:12px; font-weight:normal; font-style:normal;">'.$row["product"].' - '.$row['description'].'</td>  
                          <td style="border-bottom:1px thin #666"; align="center">'.$row["uom"].'</td>  
                          <td style="border-bottom:1px thin #666"; align="center">'.$row["price"].'</td>  
                          <td style="border-bottom:1px thin #666"; align="center">'.$row["qty"].'</td>  
                          <td style="border-bottom:1px thin #666"; align="center">'.$row["discount"].'</td>  
                          <td style="border-bottom:1px thin #666"; align="center">'.$row["taxation"].'%</td>
                          <td style="border-bottom:1px thin #666"; align="center">'.$row["total"].'</td>    
                     </tr>  
                          ';  
                          $total_amt += $row['total']; 
      $tax_amt += $row['tax_amount'];
      } 
$output .= '<tr><td colspan="7" style="border-top:1px thin #666";></td></tr><tr><td colspan="5" align="left"><strong>Total</strong></td><td align="center">'.number_format($tax_amt,2).'</td><td align="center">'.number_format($total_amt,2).'</td></tr>';

      return $output;
}

我显示它

$content = ''; 

      $content .= '  

      <table border="1"><tr><td width="100%">
      <table border="0">
           <tr bgcolor="#796799" style="color:#FFF;">' ;
         $pdf->SetFont('arsenalb', 'B', 12);  

        $content .= '  
                <th width="40%" style="border-left-width:14px;border-left-color:#796799;"  height="30" align="center">Description</th>  
                <th width="10%" align="center">UOM</th>  
                <th width="13%" align="center">Price</th>  
                <th width="7%" align="center">Qty</th>  
                <th width="7%" align="center">Disc</th> 
                <th width="10%" align="center">Tax</th>  
                <th width="13%" align="center">Total</th>   
           </tr>  
      '; 
     $pdf->SetFont('arsenal', '', 10); 
      $content .= fetch_data();  
      $content .= '</table></td></tr></table>';  
$pdf->writeHTML($content);  

我只希望表格标题为粗体,所以我在标题后面使用了$pdf->SetFont('arsenal', '', 10);。但它使标题也正常,而不是粗体。如果我删除它,那么整个表数据将变为粗体。

有没有办法将表格分开? https://tcpdf.org/examples/example_011/

1 个答案:

答案 0 :(得分:1)

这不起作用的原因非常简单。在第二个SetFont行之后,您将所有$内容写入$ pdf。这意味着使用了第一行,但由于没有内容添加到pdf中,因此它不会显示任何内容。

由于tcpdf允许您编写HTML,因此不使用HTML来使标题变粗?使用<b>标记。另一种选择是你制作两张桌子。一个用于标题,一个用于内容。由于您定义了列的宽度,因此可以执行此操作。

你会得到类似的东西:      $ hdr =&#39;包含标题数据的完整表格&#39;;

 $pdf->SetFont('arsenalb', 'B', 12);
 $pdf->writeHTML($hdr);

 $content .= 'new table, with column with defined';
 $content .= fetch_data();  
 $content .= '</table></td></tr></table>';  

 $pdf->SetFont('arsenal', '', 10); 
 $pdf->writeHTML($content);

但这可能会起作用,具体取决于您是否需要第二个外表。如果你需要它,它很可能是不可能的,除非你可以编写部分HTML yo $ pdf-&gt; writeHTML()。我不确定你能/不能。