我正在尝试从PHP页面生成动态PDF,它给了我这个错误:
致命错误:C:\ xampp \ htdocs \ Gokujou \ dompdf \ src \ Cellmap中出现未捕获的异常“ Dompdf \ Exception”,消息为“找不到第4行,请在跟踪器中提交带有HTML代码的问题”。 php:417堆栈跟踪:#0 C:\ xampp \ htdocs \ Gokujou \ dompdf \ src \ FrameReflower \ TableRow.php(62):Dompdf \ Cellmap-> get_frame_height(Object(Dompdf \ FrameDecorator \ TableRow))#1 C: \ xampp \ htdocs \ Gokujou \ dompdf \ src \ FrameDecorator \ AbstractFrameDecorator.php(893):Dompdf \ FrameReflower \ TableRow->回流(NULL)#2 C:\ xampp \ htdocs \ Gokujou \ dompdf \ src \ FrameReflower \ TableRowGroup。 php(51):Dompdf \ FrameDecorator \ AbstractFrameDecorator-> reflow()#3 C:\ xampp \ htdocs \ Gokujou \ dompdf \ src \ FrameDecorator \ AbstractFrameDecorator.php(893):Dompdf \ FrameReflower \ TableRowGroup-> reflow(NULL) #4 C:\ xampp \ htdocs \ Gokujou \ dompdf \ src \ FrameReflower \ Table.php(488):Dompdf \ FrameDecorator \ AbstractFrameDecorator-> reflow()#5 C:\ xampp \ htdocs \ Gokujou \ dompdf \ src \ FrameDecorator \ AbstractFrameDecorator.php (893):Dompdf \ FrameReflower \ Table-> reflow(Object(Dompdf \ FrameDecorator \ Block))在C:\ xampp \ htdocs \ Gokujou \ dompdf \ src \ Cellmap.php在第417行
我有一个按钮,按“结帐”会使用以下代码生成PDF页面:
<?php
require_once 'dompdf/autoload.inc.php';
use Dompdf\Dompdf;
$dompdf = new Dompdf();
$dompdf->loadHTML(file_get_contents('receipt.php'));
$dompdf->setPaper('A4', 'landscape');
$dompdf->render();
$dompdf->stream('samplepdf1');
?>
Run Code Online (Sandbox Code Playgroud)
receive.php文件里面是什么:
<?php
include 'config.php';
?>
<!DOCTYPE html>
<html>
<head>
<title>Gokujou Japanese Restaurant</title>
<link rel="stylesheet" type="text/css" href="CSS/receipt.css">
</head>
<body>
<div class="receiptContainer">
<center>
<img src="Images/logo.png" width="175px">
<h4>GOKUJOU JAPANESE RESTAURANT</h4>
<p>Total Gas Station, Hibbard Ave., Looc,<br>Dumaguete City, 6200 Negros Oriental, Philippines <br>
09985555175 | 422-1435 <br>
<?php echo date("Y-m-d h:i:sA"); ?>
</p>
<table width="90%" style="text-align: center;">
<tr>
<th>DESCRIPTION</th>
<th>QTY</th>
<th>PRICE</th>
<th>TOTAL</th>
</tr>
<tr>
<td></td>
</tr>
<?php
$query = mysqli_query($con, "SELECT * FROM orders WHERE customerID = '".$_SESSION['customer']."' AND status = 'Checked Out'");
while($row = mysqli_fetch_row($query)){
?>
<tr>
<td><?php echo $row[3]; ?></td>
<td><?php echo $row[5]; ?></td>
<td><?php echo $row[4]; ?></td>
<td><?php echo $row[6]; ?></td>
</tr>
<?php
}
$total = mysqli_query($con, "SELECT SUM(total) AS grandTotal FROM orders WHERE customerID = '".$_SESSION['customer']."' AND status = 'Checked Out' GROUP BY customerID");
$row = mysqli_fetch_row($total);
$sum = $row[0];
?>
<tr>
<!-- break space -->
<tr></tr><tr></tr><tr></tr><tr></tr>
<tr></tr><tr></tr><tr></tr><tr></tr>
<tr></tr><tr></tr><tr></tr><tr></tr>
<td colspan="1" style="text-align: left">GRAND TOTAL: <?php echo $sum; ?></td>
<td colspan="3"></td>
</tr>
<tr style="text-align: left">
<td colspan="1">CASH: <?php echo $_SESSION['cash']; ?></td>
<td colspan="3"></td>
</tr>
<tr style="text-align: left">
<td colspan="1">CHANGE: <?php echo $_SESSION['cash'] - $sum; ?></td>
<td colspan="3"></td>
</tr>
</table>
</center>
</div> <!-- fullContainer -->
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
当我在loadHTML()语句上放一个字符串时,它可以工作,但是当我放一个PHP文件甚至一个静态HTML时,它返回一个错误,但是一个静态HTML将返回第3行而不是第4行。
经过大量测试,我得出的结论是DOMPDF确实不喜欢空标签。
例:
<tr></tr><tr></tr><tr></tr><tr></tr>
<tr></tr><tr></tr><tr></tr><tr></tr>
<tr></tr><tr></tr><tr></tr><tr></tr>
Run Code Online (Sandbox Code Playgroud)
我的代码也包含其中一些内容(用于制作POC原型),当我删除它们时,我得到了可以正确呈现的表格
(我猜DomPDF不能计算空标签的尺寸时会阻塞)
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
3468 次 |
| 最近记录: |