2017-03-23 37 views
0

私は厄介な問題があります。私はpdfファイルを作成することができるアプリケーションを開発しています。 pdfsの生成は機能します。しかし、1つのサイトでのみ。私が最初にプロダクションでpdfを生成すると、それはプロダクションアプリで正常に動作しますが、テストアプリでは正常に動作しません。反対もまた真です。テストでpdfを最初に作成した場合、テストでは正常に動作しますが、実稼働環境では正常に動作しません。私は90%がブラウザの問題だと確信しています。異なるブラウザでテストとプロダクションを実行すると動作します。 pruductionとテストは、同じWebサイトにありますが、異なるフォルダにあり、データベースとデータベースのユーザーが異なります。テスト機能でPDFmpdfは生産サーバとテストサーバでpdfを生成しません

$t = time(); 
$pdf_name = $name.'-'.$t.'.pdf'; 
ob_clean(); 
header('Content-type: application/pdf'); 
header('Content-Disposition: inline; filename="' . $pdf_name . '"'); 
header('Content-Transfer-Encoding: binary'); 
header('Accept-Ranges: bytes'); 

require_once 'pdf_templet.php'; 

$mpdf=new mPDF('utf-8','A4','','' , 0 , 0 , 0 , 0 , 0 , 0); 
$mpdf->setFooter('{PAGENO}'); 
$mpdf->SetDisplayMode('fullpage'); 
$mpdf->list_indent_first_level = 0; 
$mpdf->WriteHTML($html_pdf);   
$mpdf->Output($pdf_name,'I'); 

を生成するためのPDFを

$pdf_name = $name.'.pdf'; 
ob_clean(); 
header('Content-type: application/pdf'); 
header('Content-Disposition: inline; filename="' . $pdf_name . '"'); 
header('Content-Transfer-Encoding: binary'); 
header('Accept-Ranges: bytes'); 

require_once 'pdf_templet.php'; 

$mpdf=new mPDF('utf-8','A4','','' , 0 , 0 , 0 , 0 , 0 , 0); 
$mpdf->setFooter('{PAGENO}'); 
$mpdf->SetDisplayMode('fullpage'); 
$mpdf->list_indent_first_level = 0; 
$mpdf->WriteHTML($html_pdf); //is generated in pdf_templet.php 
$mpdf->Output($pdf_name,'I'); 

テスト機能コードを生成するための

生産関数のコードは私は、関数が異なる名前を持つfileandの名前にタイムスタンプを追加しましたしかし、それはまだ動作しません。 それを動作させる方法を知っている人はいますか?

+0

ブラウザが責任を負うことはほとんどありません。コード内のどこかにエラーが発生した場合、あなたのpdfは正常に表示されません。これをデバッグするには、pdfを開いて保存するのではなく、保存したファイルをテキストエディタで表示してください。ファイルが空の場合、PHPのエラー報告をオンにします。通常のデバッグプロセスに従うことができます。 –

+0

@KIKOSoftwareそれを保存して開こうとすると、ファイルが壊れていることがわかります。メモ帳で開くと、HTMLコードが入っています。 –

+0

ブラウザのコンソールでエラーが発生しました。エラー:Invalid XRef stream header pdf.worker.js:3841 –

答えて

0

問題は、mpdfを間違って読み込んでいたことでした。私はそれが閉鎖される前に自分のサイトの例にあったように使っていました。 githubのドキュメントはそれをうまく説明しています。

私は

require_once(mpdf/mpdf.php); 

正しい方法は

require_once(mpdf/vendor/autoload.php); 

今では作品である!それをロード私のコードをステップバイステップでデバッグすることができた@KIKOSoftwareに感謝します。

+0

ところで、 'header()'関数を自分で呼び出す必要はなく、mPDFがこれを行います。 – Finwe

関連する問題