我在Laravel 5.5 中使用mpdf 8.0執行以下代碼
$mpdf = new \Mpdf\Mpdf();
$mpdf->WriteHTML('Hello World');
$mpdf->Output("test","I");
它輸出亂碼/垃圾值,似乎以原始形式顯示 pdf 檔案。
一些發現
- 如果我使用
$mpdf->Output($reportPath, 'F');(將其保存到檔案)并打開它。它按預期打開檔案。 - 如果我
die();在$mpdf->Output("test","I");它顯示檔案之后放置。 - 我的懷疑是,它有什么事做
Content-type:application/pdf不是默認設定,但我一直在使用也嘗試header("Content-type:application/pdf");之前Output,但沒有用的。它仍然顯示Content-Type: text/html; charset=UTF-8在 chrome 的網路選項卡中的回應標題中(也嘗試過 Firefox)。
一些背景故事
- 它曾經可以正常作業
php7.3,但php7.4由于單個服務器場景上的某些庫和多個應用程式,我必須將其更新。 - 也開始為我的應用程式使用子域,而不是將目錄放在域之后。
我在找
- 不需要我放在
die;輸出末尾的解決方案。 - 或者關于為什么這已經開始發生或/以及為什么我需要
die;在Output. - 任何其他解決方案。
目標是提供一些參考。對于將來遇到相同問題的人,因為我花了幾個小時而沒有任何專門解決此類問題的方法。
uj5u.com熱心網友回復:
好的,所以我發現我不能僅僅依靠$this->mpdf->Output('test.pdf',"I")將我的結果(盡管它以前使用同一行作業)輸出到瀏覽器。
因為出于某種原因它已經開始Content-Type:text/html在Content-Type標頭中發送值所以我不得不改變它。
解決方案
我是這樣做的:
return response($this->mpdf->Output('test.pdf',"I"),200)->header('Content-Type','application/pdf');
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/368430.html
標籤:拉拉维尔 laravel-5 pdf生成 pdf php-7.4
上一篇:使用Terraform的AzureAD應用注冊中的應用程式IDURI引發錯誤
下一篇:通過npm腳本從Powershell使用--collectCoverageFrom運行Jest測驗時,轉義引號和斜杠的正確方法是什么?
