我在生成HTML / PHP代码到PDF时遇到问题。我正在使用mPdf 这是我的代码:
<table id="packing_slip">
<?php
foreach($sheets as $s):
echo "<tr>";
echo "<td>";
$name= explode(' ',$s['customer_name'])
?>
<div style="text-align: center">
</div>
<h2 style="text-align: center">Hi <?php echo $name[0] ?>!</h2>
<div align="center">
<br> Here is your delivery for: <br>
<?php echo date('l, F dS', strtotime($s['delivery_week']));?>
<br>
ORDER NO. <?php echo $s['order_id'] ?> | CUSTOMER NO.<?php echo $s['client_id'] ?>
<?php $query="select * from orders left join deliveries on orders.id = deliveries.order_id left join deliveries_meals on deliveries.id = deliveries_meals.delivery_id where orders.id = '{$s['order_id']}'";
$result_main = mysqli_query($conn,$query);
$row_main = mysqli_fetch_assoc($result_main);
$query_meals = "select label, subtitle, meals.name from meal_options left join meals on meal_options.meal_id = meals.id where meal_options.id ='{$row_main['meal_option_id']}' ";
$result_meals = mysqli_query($conn,$query_meals);
$row_meals = mysqli_fetch_assoc($result_meals);
?>
<hr style="height: 5px;border-top:1px solid #000 !important;margin-bottom:0px">
<hr style="height: 5px;border-top:1px solid #000 !important;margin-top: 5px !important;">
</div>
<?php foreach($s['meals'] as $m):?>
<h3><?php echo $row_meals['name'];?> </h3>
<h5><i><?php
if($row_meals['label'] != '' && $row_meals['subtitle'] != ''){ echo $row_meals['subtitle'] . " & " . $row_meals['label'];}
elseif ($row_meals['label'] != '' ) {echo "with " . $row_meals['label'];}
else{ echo $row_meals['subtitle'];}?></i> </h5>
<?php echo $m['count']?> SERVING SHIPPED<br><br>
COMPONENTS
<hr align = "left" style="width: 115px; border-top:1px solid #000 !important;margin-top: 5px !important;margin-bottom:0px">
<br>
<?php if (@$m['components'][0] != ''){?>
<?php foreach($m['components'] as $c):?>
<?php echo $c?><br>
<?php endforeach;
} else {echo "Everything is included in package. <br>";}
?>
<br>
<?php if($m['instructions'][0] != '' || $m['instructions'][1] !=''){?>
INSTRUCTIONS
<hr align = "left" style="width: 115px; border-top:1px solid #000 !important;margin-top: 5px !important;margin-bottom:0px">
<br>
<?php if($m['instructions'][0] != ''){echo "Microwave : ".$m['instructions'][0];}?><br><br>
<?php if($m['instructions'][1] != ''){ echo "Stovetop : ".$m['instructions'][1];}?><br>
<?php }?>
<hr align="left" style="width: 400px; border-top:1px solid #000 !important;margin-top: 5px !important;margin-bottom:0px" >
<?php endforeach;?>
<hr align="left" style="width: 600px; border-top:1px solid #000 !important;margin-top: 5px !important;margin-bottom:0px" >
<div align="center"><h3> Thank you,<?php echo $name[0] ?>!</h3>
<hr style="width: 600px; border-top:1px solid #000 !important;margin-top: 5px !important;margin-bottom:0px" >
</div>
<br>
<br>
<br>
<br>
<br>
</td>
</tr>
<?php endforeach; ?>
</table>
<?php
include('mpdf60/mpdf.php');
$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13);
$mpdf->debug = true;
$mpdf->SetDisplayMode('fullpage');
$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list
$mpdf->WriteHTML('<p style="color:red;">Hello World<br/>Fisrt sentencee</p>');
$mpdf->Output();
exit;
?>
我现在就把#34; Hello World&#34;但我实际上想把我的整个代码,我也得到这个错误:
Output has already been sent from the script - PDF file generation aborted.
我怎样才能解决这个问题?我正在使用FuelPhp,我不知道如何将其添加到PDF中,以及它如何工作的任何想法。因为现在它甚至不让我把#Hello;&#34;
答案 0 :(得分:0)
您现在正尝试做两件相互排斥的事情:在浏览器中显示HTML代码和在浏览器中显示PDF文档。
显示PDF(调用不带参数的Output
方法)尝试设置正确的HTTP Content-type
标头,但不能这样做,因为已有输出 - 正如错误消息所述。
请确保禁用框架提供的所有布局,因为它会产生可能导致此问题的完全相同的输出。
您可以通过使用ob_
处理程序包围HTML代码并使用捕获的输出来解决您的问题
<?php
ob_start();
?> ... HTML code ... <?php
$html = ob_get_clean();
...
$mpdf->writeHtml($html);
或完全将您的HTML代码生成为PHP字符串:
<?php
$html = '<table id="packing_slip">';
foreach($sheets as $s):
$html .= "<tr>";
$html .= "<td>";
另见https://mpdf.github.io/troubleshooting/error-messages.html