2017-10-10 17 views
1

HTML/PHPコードをPDFに生成する際に問題が発生しています。 ImはここMPDF を使用して私のコードです: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'] ?>&nbsp; | &nbsp; 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']?> &nbsp; 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; 
?> 

私は、「Hello World」の今の置くが、私は実際に私の全体のコードを配置したい、また、私はこのエラーを取得する: Output has already been sent from the script - PDF file generation aborted. 私はこれをどのように修正することができますか?私はFuelPhpを使用していますが、PDFにどのように追加できるのかわかりません。今では「Hello World」を入れさえしていません。

答えて

0

ブラウザでHTMLコードを表示すると、がブラウザにPDFドキュメントを表示します。 (パラメータなしOutputメソッドを呼び出す)PDFを表示

は正しいHTTPにContent-typeヘッダーを設定しようとしますが、すでに出力があるので、そうすることはできません - エラーメッセージの状態として。

フレームワークが提供するすべてのレイアウトが無効になっていることを確認してください。これは、これと同じ出力を生成するためです。

あなたはob_ハンドラを使用してHTMLコードを囲むとキャッチ出力

<?php 

ob_start(); 

?> ... HTML code ... <?php 

$html = ob_get_clean(); 

... 

$mpdf->writeHtml($html); 

または完全にPHPの文字列にあなたのHTMLコードを生成することにより、のいずれかを使用して、あなたの問題を解決することができます:

<?php 

$html = '<table id="packing_slip">'; 

foreach($sheets as $s): 
$html .= "<tr>"; 
$html .= "<td>"; 

も参照してくださいhttps://mpdf.github.io/troubleshooting/error-messages.html

+0

私は 'ob_start();で最初のオプションを試しましたが、pdfがダウンロードされますが、私が開くと" PDF文書を読み込めませんでした。 "これがなぜ起こっているのかあなたは何か考えていますか? – john

+0

また、 'ob_start(); 「ページの冒頭にいなければならない? – john

+0

PDFをダウンロードしてブラウザに表示してインラインで表示する場合、 'Output'メソッドを呼び出した後でさえ*自分で何も印刷してはいけません。だから、ob_startはコードの先頭にあるべきで、 'Output'メソッドを呼び出した後に出力(print/echo/etc)があってはいけません。 – Finwe

関連する問題