从 tcpdf 中的数据库生成数据 table
generating data from db in tcpdf table
我正在尝试使用 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);
我只希望 table header 加粗,所以我在 header 之后使用 $pdf->SetFont('arsenal', '', 10);
。但它使 header 也正常,而不是粗体。如果我删除它,那么整个 table 数据将变为粗体。
有什么办法可以将 table 这样的东西分开吗? https://tcpdf.org/examples/example_011/
这行不通的原因很简单。在第二个 SetFont 行之后将所有 $content 写入 $pdf。这意味着使用了第一行,但由于没有向 pdf 添加任何内容,因此它不会显示任何内容。
既然 tcpdf 允许你写 HTML,为什么不使用 HTML 来使 header 加粗?使用 <b>
标签。另一种选择是制作两个 table。一份用于 header,一份用于内容。由于您定义了列的宽度,因此您可以这样做。
你会得到如下信息:
$hdr = 'full table with header data';
$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);
但这可能会起作用,具体取决于您是否需要第二个外部 table。如果你需要它,它很可能是不可能的,除非你可以写 partial HTML yo $pdf->writeHTML()。我不确定你 can/cannot.
我正在尝试使用 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);
我只希望 table header 加粗,所以我在 header 之后使用 $pdf->SetFont('arsenal', '', 10);
。但它使 header 也正常,而不是粗体。如果我删除它,那么整个 table 数据将变为粗体。
有什么办法可以将 table 这样的东西分开吗? https://tcpdf.org/examples/example_011/
这行不通的原因很简单。在第二个 SetFont 行之后将所有 $content 写入 $pdf。这意味着使用了第一行,但由于没有向 pdf 添加任何内容,因此它不会显示任何内容。
既然 tcpdf 允许你写 HTML,为什么不使用 HTML 来使 header 加粗?使用 <b>
标签。另一种选择是制作两个 table。一份用于 header,一份用于内容。由于您定义了列的宽度,因此您可以这样做。
你会得到如下信息: $hdr = 'full table with header data';
$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);
但这可能会起作用,具体取决于您是否需要第二个外部 table。如果你需要它,它很可能是不可能的,除非你可以写 partial HTML yo $pdf->writeHTML()。我不确定你 can/cannot.