Как решить мин / макс ширина ошибки DOMP при создании PDF? - PullRequest
0 голосов
/ 25 декабря 2018

Я получаю следующую ошибку в своем коде при преобразовании в pdf

, в него не включен оператор встроенного блока, а ширина определена для каждого заголовка таблицы, но проблема сохраняется

<?php
//print_invoice.php
if(isset($_GET["pdf"]) && isset($_GET["id"]))
{
    require_once 'pdf.php';
    include('connection2.php');
    $output = '';
    $statement = $connect->prepare("
  SELECT * FROM POrder
  WHERE order_id = :order_id
  LIMIT 1
 ");
    $statement->execute(
    array(
        ':order_id'       =>  $_GET["id"]
    )
);
$result = $statement->fetchAll();
foreach($result as $row)
{
    $output .= '
   <table width="100%" border="1" cellpadding="5" cellspacing="0">
<tr>
 <td colspan="2" align="center" style="font-size:18px"><b>Invoice</b></td>
</tr>
<tr>
 <td colspan="2">
  <table width="100%" cellpadding="5">
   <tr>
    <td width="65%">
     To,<br />
     <b>Vendors Name</b><br />
     Name : '.$row["vendorname"].'<br />
     Description : '.$row["description"].'<br />
    </td>
    <td width="35%">
     Reverse Charge<br />
     Invoice No. : '.$row["order_no"].'<br />
     Invoice Date : '.$row["order_date"].'<br />
    </td>
   </tr>
  </table>
  <br />
  <table width="100%" border="1" cellpadding="5" cellspacing="0">
   <tr>
    <th>Sr No.</th>
    <th>Item Name</th>
    <th>Quantity</th>
    <th>Price</th>
    <th>Actual Amt.</th>
    <th colspan="2">GST (%)</th>
    <th rowspan="2">Total</th>
   </tr>
   <tr>
    <th></th>
    <th></th>
    <th></th>
    <th></th>
    <th></th>
    <th>Rate</th>
    <th>Amt.</th>
   </tr>';
    $statement = $connect->prepare(
            "SELECT * FROM POrder_item
   WHERE order_id = :order_id"
       );
        $statement->execute(
        array(
            ':order_id'       =>  $_GET["id"]
        )
    );
    $item_result = $statement->fetchAll();
    $count = 0;
    foreach($item_result as $sub_row)
    {
            $count++;
            $output .= '
   <tr>
    <td>'.$count.'</td>
    <td>'.$sub_row["item_name"].'</td>
<td>'.$sub_row["item_quantity"].'</td>
<td>'.$sub_row["item_price"].'</td>
<td>'.$sub_row["item_price_bt"].'</td>
<td>'.$sub_row["item_gst"].'</td>
<td>'.$sub_row["item_price_at"].'</td>
    <td>'.$sub_row["final_amount"].'</td>
   </tr>
   ';
        }
        $output .= '
  <tr>
   <td align="right" colspan="11"><b>Total</b></td>
   <td align="right"><b>'.$row["total_after_tax"].'</b></td>
  </tr>
  <tr>
   <td colspan="11"><b>Total Amt. Before Tax :</b></td>
   <td align="right">'.$row["total_before_tax"].'</td>
  </tr>
  <tr>
   <td colspan="11">Add : GST :</td>
   <td align="right">'.$row["gst"].'</td>
  </tr>
   <td colspan="11"><b>Total Tax Amt.  :</b></td>
   <td align="right">'.$row["order_total_tax"].'</td>
  </tr>
  <tr>
   <td colspan="11"><b>Total Amt. After Tax :</b></td>
   <td align="right">'.$row["total_after_tax"].'</td>
  </tr>

  ';
    $output .= '
      </table>
     </td>
   </tr>
   </table>
   ;
    }
    $pdf = new Pdf();
    $file_name = 'Invoice-'.$row["order_no"].'.pdf';
    $pdf->loadHtml($output);
    $pdf->render();
    $pdf->stream($file_name, array("Attachment" => false));
}
?>

// pdf.php

<?php
require_once 'dompdf/autoload.inc.php';
use Dompdf\Dompdf;
class Pdf extends Dompdf{
public function __construct() {
parent::__construct();
}
}
?>

я ожидаю получить pdf, но вместо этого получаю эту ошибку

Неустранимая ошибка: необработанное исключение 'Dompdf \ Exception' с сообщением 'Min /максимальная ширина не определена для строк таблицы в /Applications/XAMPP/xamppfiles/htdocs/NTPC/dompdf/src/FrameReflower/TableRow.php:72 Трассировка стека: # 0 / Applications / XAMPP / xamppfiles / htdocs / NTPC / dompdf / src/FrameDecorator/AbstractFrameDecorator.php(903): Dompdf \ FrameReflower \ TableRow-> get_min_max_width () # 1 /Applications/XAMPP/xamppfiles/htdocs/NTPC/dompdf/src/FrameReflower/Ab \AbstractFrameDecorator-> get_min_max_width () # 2 /Applications/XAMPP/xamppfiles/htdocs/NTPC/dompdf/src/FrameDecorator/AbstractFrameDecorator.php(903): Dompdf \ FrameReflower \ AbstractFrameReflower- g>et_min_max_width () # 3 /Applications/XAMPP/xamppfiles/htdocs/NTPC/dompdf/src/FrameReflower/AbstractFrameReflower.php(268): Dompdf \ FrameDecorator \ AbstractFrameDecorator-> get_min_max /td xams 4http /NTPC / dompdf / src / FrameDecorator / AbstractFrameDecorator.php (903): Dompdf \ FrameReflower \ AbstractFrameReflower-> get_min_max_width в /Applications/XAMPP/xamppfiles/htdocs/NTPC/dompdf/src/Fable *.

1 Ответ

0 голосов
/ 25 декабря 2018

Кажется, что включение dompdf, как вы, больше не поддерживается, см. Проблему 1153 .Парень, который спрашивает, получает точно такие же сообщения об ошибках, что и вы.

Я бы порекомендовал следовать руководству по установке dompdf и установить его с помощью composer (так как это самое сложное,свободный путь в долгосрочной перспективе).Я также нашел кое-что в при установке composer на XAMPP , но я не могу помочь с этим, так как не знаю XAMPP.В качестве запасного варианта вы можете загрузить предварительно сконфигурированный пакет (описанный ниже в нескольких строках).

А также проверить руководство по быстрому запуску , чтобы посмотреть, работает ли dompdf вообще вместо того, чтобы сначала использовать собственный кодпотому что некоторые из них могут быть устаревшими.

Надеюсь, это поможет, удачи!

...