TCPDF PNG изображение не может быть отображено в цикле - PullRequest
1 голос
/ 27 марта 2020

все. Я хочу создать PDF, который может взять изображение PNG из базы данных mysql и распечатать его. Моя проблема в том, что изображение в формате 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');

Итак, это моя база данных Я использую одно и то же изображение для каждой записи

Этот вывод выводится, когда Я использую png image Изображение печатается только один раз

Если я использую формат JPG, проблем не будет. Просто с файлом PNG. Почему я использую формат PNG, потому что я хочу использовать это в своем проекте, где пользователь может загрузить изображение в базу данных в формате PNG и распечатать обратно в PDF.

1 Ответ

0 голосов
/ 27 марта 2020

Я думаю, что это может помочь вам

TCPDF - изображение заголовка отображается только на первой странице

попробуйте использовать разные изображения .png, а не одинаковые на каждом oop, если он печатает ОК, как вы можете прочитать по ссылке, в TCPDF есть ошибка с использованием того же изображения

...