TCPDF png图像无法循环渲染

TCPDF png image cannot be rendered in loop

各位。我想生成一个可以从 mysql 数据库中获取 png 图像并进行打印的 pdf。 我的问题是 png 图像只打印一次。

这是我的代码:

<?php
include_once('TCPDF/tcpdf.php');
include_once('DBConnect.php');

// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

$pdf->SetCreator('PDF_CREATOR');
$pdf->SetAuthor('PDF_AUTHOR');
$pdf->SetTitle('Demonstrating pdf with php');

$pdf->setHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING, array(0, 6, 255), array(0, 64, 128));
$pdf->setFooterData(array(0,64,0), array(0,64,128));

$pdf->setHeaderFont(array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

// set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

// set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

// ---------------------------------------------------------

// set default font subsetting mode

$pdf->setFont('dejavusans', '', 14, '', true);

$pdf->AddPage();

$result = mysqli_query($con, "SELECT * FROM employee") or die("database error:". mysqli_error($con));
$counter = 0;
$total = mysqli_num_rows($result);
// while($counter<8){
$html =  "

<style>
table {
    font-family: arial, sans-serif;
    border-collapse: collapse;
    width: 80%;
}

td, th {
    border: 1px solid #black;
    text-align: left;
    padding: 10px;
}
img.resize {
  max-height:170px;
  max-width:150px;
}
.center {
  display: block;
  margin-left: auto;
  margin-right: auto;
  width: 50%;
}
</style>

<h4>
Total no. of employee '$total'
</h4>
<table align='center'>
  <tr>
    <th>ID</th>
    <th>Employee Name</th>
    <th>Employee Salary</th>
    <th>Employee Age</th>
    <th>Employee Image</th>
  </tr>

";

while($row = mysqli_fetch_array($result))
{
  $image = $row['employee_image'];
  // $image_src = 'images/user.png';
  // imagepng(imagecreatefrompng($image_src),$image);
    $html .= '
  <tr nobr="true">
   <td>'.$row["id"].'</td>
   <td>'.$row["employee_name"].'</td>
   <td>'.$row["employee_salary"].'</td>
   <td>'.$row["employee_image"].'</td>
  <td>'.'<img src="'.$image.'">'.'</td>
  </tr>
 ';
}

$html .= '</table>';
// $counter++;
// }
$pdf->writeHTML($html);

$pdf->Output('test.pdf', 'I');

所以这是我的数据库 i use same image for every entry

这是我使用png图片时的输出 The image only printed once

如果我使用的是 JPG 格式,就没有问题。只需使用 PNG 文件。为什么我使用 PNG 格式,因为我想在我的项目中使用它,用户可以将图像以 PNG 格式上传到数据库,然后以 PDF 格式打印出来。

我想这对你有帮助

尝试使用不同的 .png 图像,在每个循环中不一样,如果打印正常,如您在 link 中所读,TCPDF 中存在使用相同图像的错误