создание PDF с использованием библиотеки tcpdf - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь сгенерировать pdf из данных базы данных, используя библиотеку tcpdf, но, к сожалению, похоже, это не работает Я не знаю, где я иду не так. Кто-нибудь, пожалуйста, помогите. Вот код, который я намерен вывести данные из таблицы в PDF. Код также генерирует таблицу, которая работает отлично, но когда дело доходит до PDF, он выводит чистое изображение, как показано в тексте. Я sh, чтобы понять, где я иду не так.

<?php
ob_start();
ini_set('display errors', 1);
error_reporting('0');
session_start();
if (!isset($_SESSION['name'])) {
    header('Location:login.php');
} elseif (isset($_SESSION['name'])) {
    $cuser = $_SESSION['name'];
}
require 'logis.php';

if(isset($_POST["generate_pdf"]))  
 {  
     //get data into pdf
function fetch_data()
{
    $year = $_POST['year'];
  $month = $_POST['month'];
    $output = '';
    // $output.='<tr><td>Youuuuuuu<td></tr>';
    include 'includes/config.php';
    $sql = "SELECT DISTINCT item_name FROM SALES WHERE MONTH(date_sold)='$month' AND YEAR(date_sold)='$year'";
    $query = mysqli_query($conn, $sql);
    $sales = mysqli_fetch_all($query, MYSQLI_ASSOC);
    foreach ($sales as $sale) {
        $item = $sale['item_name'];

        $sql1 = "SELECT SUM(total_price) AS totalsum,SUM(quantity_sold) AS totalsold  FROM sales WHERE item_name='$item' AND MONTH(date_sold)='$month' AND YEAR(date_sold)='$year' ";
        $result1 = mysqli_query($conn, $sql1);
        $row = mysqli_fetch_assoc($result1);
        $sumsold = $row['totalsold'];
        $sumprice = $row['totalsum'];
        $output .= '<tr><td>' . $item . '</td>
           <td>' . $sumsold . '</td>
           <td>' . $sumprice . '</td>
           </tr>';
    }
    $resultsum = mysqli_query($conn, "SELECT SUM(total_price) AS totalsum FROM sales WHERE MONTH(date_sold)='$month' AND YEAR(date_sold)='$year'");
    $rowsum = mysqli_fetch_assoc($resultsum);
    $sum = $rowsum['totalsum'];
    $output .= '<tr><td colspan="2" style="text-align:center;">Total Amount: </td>
         <td colspan="1" style="text-decoration:bold;color:blue;">' . $sum . '</td></tr>';
         echo $output;
    return $output;
}
      require_once('includes/tcpdf/tcpdf.php');  
      $obj_pdf = new TCPDF('P', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);  
      $obj_pdf->SetCreator(PDF_CREATOR);  
      $obj_pdf->SetTitle("Generate monthly summary");  
      $obj_pdf->SetHeaderData('', '', PDF_HEADER_TITLE, PDF_HEADER_STRING);  
      $obj_pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));  
      $obj_pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));  
      $obj_pdf->SetDefaultMonospacedFont('helvetica');  
      $obj_pdf->SetFooterMargin(PDF_MARGIN_FOOTER);  
      $obj_pdf->SetMargins(PDF_MARGIN_LEFT, '10', PDF_MARGIN_RIGHT);  
      $obj_pdf->setPrintHeader(false);  
      $obj_pdf->setPrintFooter(false);  
      $obj_pdf->SetAutoPageBreak(TRUE, 10);  
      $obj_pdf->SetFont('helvetica', '', 11);  
      $obj_pdf->AddPage();  
      $content = '';  
      $content .= '  
      <h4 align="center">MONTHLY SUMMARY </h4><br /> 
      <table border="1" cellspacing="0" cellpadding="3">  
           <tr>  
                <th width="40%">Item Name</th>  
                <th width="30%">Amount Sold(Kgs)</th>  
                <th width="30%">Total Price(Kshs)</th>  
           </tr>  
      ';  
      $content .= fetch_data();  
      $content .= '</table>';  
      $obj_pdf->writeHTML($content);
      ob_end_clean(); 
      $obj_pdf->Output('summary.pdf', 'I');  
 } 

здесь вывод

1 Ответ

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

Почему вы используете ob_start()? Пусть это вызывает ошибку. В приведенном ниже коде я удалил ob function calls и эхо $output в функции fetch_data(). Пожалуйста, попробуйте это и покажите ошибки, если они появятся. Если это не работает, пожалуйста, покажите, как вы выполняете таблицу только с правильными результатами.

error_reporting('E_ALL');
session_start();
if (!isset($_SESSION['name'])) {
    header('Location: login.php');
} elseif (isset($_SESSION['name'])) {
    $cuser = $_SESSION['name'];
}
require 'logis.php';

if(isset($_POST["generate_pdf"]))  
 {  
     //get data into pdf
function fetch_data()
{
    $year = $_POST['year'];
    $month = $_POST['month'];
    $output = '';
    include 'includes/config.php';
    $sql = "SELECT DISTINCT item_name FROM SALES WHERE MONTH(date_sold)='$month' AND YEAR(date_sold)='$year'";
    $query = mysqli_query($conn, $sql);
    $sales = mysqli_fetch_all($query, MYSQLI_ASSOC);
    foreach ($sales as $sale) {
        $item = $sale['item_name'];
        $sql1 = "SELECT SUM(total_price) AS totalsum,SUM(quantity_sold) AS totalsold  FROM sales WHERE item_name='$item' AND MONTH(date_sold)='$month' AND YEAR(date_sold)='$year' ";
        $result1 = mysqli_query($conn, $sql1);
        $row = mysqli_fetch_assoc($result1);
        $sumsold = $row['totalsold'];
        $sumprice = $row['totalsum'];
        $output .= '<tr><td>' . $item . '</td><td>' . $sumsold . '</td><td>' . $sumprice . '</td></tr>';
    }
    $resultsum = mysqli_query($conn, "SELECT SUM(total_price) AS totalsum FROM sales WHERE MONTH(date_sold)='$month' AND YEAR(date_sold)='$year'");
    $rowsum = mysqli_fetch_assoc($resultsum);
    $sum = $rowsum['totalsum'];
    $output .= '<tr><td colspan="2" style="text-align:center;">Total Amount: </td><td colspan="1" style="text-decoration:bold;color:blue;">' . $sum . '</td></tr>';

    return $output;
}
      require_once('includes/tcpdf/tcpdf.php');  
      $obj_pdf = new TCPDF('P', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);  
      $obj_pdf->SetCreator(PDF_CREATOR);  
      $obj_pdf->SetTitle("Generate monthly summary");  
      $obj_pdf->SetHeaderData('', '', PDF_HEADER_TITLE, PDF_HEADER_STRING);  
      $obj_pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));  
      $obj_pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));  
      $obj_pdf->SetDefaultMonospacedFont('helvetica');  
      $obj_pdf->SetFooterMargin(PDF_MARGIN_FOOTER);  
      $obj_pdf->SetMargins(PDF_MARGIN_LEFT, '10', PDF_MARGIN_RIGHT);  
      $obj_pdf->setPrintHeader(false);  
      $obj_pdf->setPrintFooter(false);  
      $obj_pdf->SetAutoPageBreak(TRUE, 10);  
      $obj_pdf->SetFont('helvetica', '', 11);  
      $obj_pdf->AddPage();  
      $content = '';  
      $content .= '  
      <h4 align="center">MONTHLY SUMMARY </h4><br /> 
      <table border="1" cellspacing="0" cellpadding="3">  
           <tr>  
                <th width="40%">Item Name</th>  
                <th width="30%">Amount Sold(Kgs)</th>  
                <th width="30%">Total Price(Kshs)</th>  
           </tr>  
      ';  
      $content .= fetch_data();  
      $content .= '</table>';  
      $obj_pdf->writeHTML($content);
      $obj_pdf->Output('summary.pdf', 'I');  
 } 
...