我正在尝试使用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/
答案 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()。我不确定你能/不能。