FPDF / PHP: страница нижнего колонтитула отображается внизу следующей страницы (пустая страница) - PullRequest
0 голосов
/ 09 января 2020

В настоящее время я создаю систему, которая может генерировать PDF. Данные в PDF из MySQL База данных. На данный момент я отображаю данные следующим образом:

Первая страница: отображать только одни данные.

Вторая страница на словах: отображает данные (максимум 3 данные на странице)

Для большей ясности, например, у меня есть 6 данных, они будут отображаться так:

Первая страница = 1 отображение данных

Вторая страница = 3 отображения данных

Третья страница 2 отображение данных

Теперь я хочу добавить нижний колонтитул. Нижний колонтитул будет отображаться в конце страницы (внизу). Я уже создал нижний колонтитул.

Если ПОСЛЕДНЯЯ СТРАНИЦА содержит 1 или 2 данные, нижний колонтитул будет отображаться внизу этой страницы. НО ... если LAST PAGE содержит 3 данных, нижний колонтитул будет отображаться внизу следующей страницы (пустой страницы). Я не знаю, в чем проблема. Может кто-нибудь помочь?

Ниже мой код

  $user3 = $conn->query("SELECT * FROM ot_report LEFT JOIN ot_users ON ot_report.badgeid = ot_users.badgeid LEFT JOIN ot_team ON ot_team.team_id = ot_users.team_id 
  WHERE ot_team.team_id = '".$_GET['team']."' AND report_date BETWEEN '".$_GET["from"]."' AND '".$_GET["to"]."' ORDER BY ot_report.report_date DESC");
      $count = 0;
      while ($row = $user3->fetch(PDO::FETCH_ASSOC)){

          $pdf->SetFont('Arial','B',10);
          $pdf->Cell(20,7,'Date:',1,0);
          $pdf->Cell(67,7,date('d-m-Y',strtotime($row['report_date'])),1,0);
          $pdf->Cell(20,7,'Time:',1,0);
          $pdf->Cell(34,7,"From: ".date('H:i',strtotime($row['ot_start'])),1,0);
          $pdf->Cell(33,7,"To: ".date('H:i',strtotime($row['ot_end'])),1,1); 
          $pdf->Cell(87,7,'Before',1,0,'C');
          $pdf->Cell(87,7,'After',1,1, 'C');

          $logo = file_get_contents('../../images/faces/noimage.png');

          if(!isset($row['photo_before']) || empty($row['photo_before'])) {
            $pdf->Cell(87, 57, $pdf->MemImage($logo, $pdf->GetX()+20, $pdf->GetY()+5, 47,47,), 1, 0, 'C');
          }else{ 
            $pdf->Cell(87, 57, $pdf->MemImage(base64_decode($row['photo_before']), $pdf->GetX()+21, $pdf->GetY()+2, 45,53,), 1, 0, 'C');
          }

          if(!isset($row['photo_after']) || empty($row['photo_after'])) {
            $pdf->Cell(87, 57, $pdf->MemImage($logo, $pdf->GetX()+20, $pdf->GetY()+5, 47,47,), 1, 1, 'C');
          }else{ 
            $pdf->Cell(87, 57, $pdf->MemImage(base64_decode($row['photo_after']), $pdf->GetX()+21, $pdf->GetY()+2, 45,53,), 1, 1, 'C');
          }

          if ($row['time_photo_before'] == null){
            $pdf->Cell(87,7,'-',1,0, 'C');
          }else{
            $pdf->Cell(87,7,$row['time_photo_before'],1,0, 'C');
          }

          if ($row['time_photo_after'] == null){
            $pdf->Cell(87,7,'-',1,1, 'C');
          }else{
            $pdf->Cell(87,7,$row['time_photo_after'],1,1, 'C');
          }

          if ((($count - 3) % 3) === 0) {


            $pdf->AddPage();
            $pdf->Cell(60,7,'',0,1,"C");

          }

        $count++;

      }

      $pdf->Footer($pdf->SetY(-48));

      $pdf->Footer($pdf->SetFont('Arial','B',9));
      $pdf->Footer($pdf->Cell(58,9,'Prepared by,',0,0,"C"));
      $pdf->Footer($pdf->Cell(58,9,'Verified by,',0,0,"C"));
      $pdf->Footer($pdf->Cell(58,9,'Approved by,',0,1,"C"));

  $pdf->Output();

  ?>

1 Ответ

1 голос
/ 09 января 2020

Расширение класса FPDF и изменение нижнего колонтитула по умолчанию. Каждый раз, когда запускается новая страница, вызывается содержимое метода нижнего колонтитула, который должен дать вам желаемый результат.

class PDF extends FPDF {
    function Footer() {
      $this->SetY(-48));
      $this->SetFont('Arial','B',9));
      $this->Cell(58,9,'Prepared by,',0,0,"C"));
      $this->Cell(58,9,'Verified by,',0,0,"C"));
      $this->Cell(58,9,'Approved by,',0,1,"C"));
    }  // end of the Footer function
}  // end of the PDF class
...