Laravel 中的 MPDF 无法输出(内联)pdf
MPDF in Laravel can't output (inline) pdf
我在 Laravel 5.5 中使用 mpdf 8.0
执行以下代码
$mpdf = new \Mpdf\Mpdf();
$mpdf->WriteHTML('Hello World');
$mpdf->Output("test","I");
它输出 gibberish/garbage 个值,似乎以原始格式显示 pdf 文件。
一些发现
- 如果我使用
$mpdf->Output($reportPath, 'F');
(将其保存到文件)并打开它。它按预期打开文件。
- 如果我在
$mpdf->Output("test","I");
之后放置 die();
它会显示文档。
- 我的怀疑是,这与默认情况下未设置
Content-type:application/pdf
有关,但我也尝试在 Output
之前使用 header("Content-type:application/pdf");
但没有用。它仍然在 chrome 的网络选项卡中显示 Content-Type: text/html; charset=UTF-8
以响应 header(也尝试过 Firefox)。
一些back-story
- 它曾经在
php7.3
上工作得很好,但由于某些库和单个服务器方案上的多个应用程序,我必须将它更新到 php7.4
。
- 也开始为我的应用程序使用 sub-domain,而不是将目录放在域之后。
我在找
- 不需要我在输出末尾放置
die;
的解决方案。
- 或者关于为什么这已经开始发生的一些线索 or/and 也许为什么我需要在
Output
之后放置 die;
。
- 任何其他解决方案。
目标是提供一些参考。对于将来遇到同样问题的人,因为我已经花了几个小时,但没有任何专门解决此类问题的东西。
好的,所以我发现我不能仅仅依靠 $this->mpdf->Output('test.pdf',"I")
将我的结果(尽管它以前使用同一行工作)输出到浏览器。
因为某些原因它已经开始在 Content-Type
header 中发送 Content-Type:text/html
值所以我不得不改变它。
解决方案
我是这样做的:
return response($this->mpdf->Output('test.pdf',"I"),200)->header('Content-Type','application/pdf');
我在 Laravel 5.5 中使用 mpdf 8.0
执行以下代码$mpdf = new \Mpdf\Mpdf();
$mpdf->WriteHTML('Hello World');
$mpdf->Output("test","I");
它输出 gibberish/garbage 个值,似乎以原始格式显示 pdf 文件。
一些发现
- 如果我使用
$mpdf->Output($reportPath, 'F');
(将其保存到文件)并打开它。它按预期打开文件。 - 如果我在
$mpdf->Output("test","I");
之后放置die();
它会显示文档。 - 我的怀疑是,这与默认情况下未设置
Content-type:application/pdf
有关,但我也尝试在Output
之前使用header("Content-type:application/pdf");
但没有用。它仍然在 chrome 的网络选项卡中显示Content-Type: text/html; charset=UTF-8
以响应 header(也尝试过 Firefox)。
一些back-story
- 它曾经在
php7.3
上工作得很好,但由于某些库和单个服务器方案上的多个应用程序,我必须将它更新到php7.4
。 - 也开始为我的应用程序使用 sub-domain,而不是将目录放在域之后。
我在找
- 不需要我在输出末尾放置
die;
的解决方案。 - 或者关于为什么这已经开始发生的一些线索 or/and 也许为什么我需要在
Output
之后放置die;
。 - 任何其他解决方案。
目标是提供一些参考。对于将来遇到同样问题的人,因为我已经花了几个小时,但没有任何专门解决此类问题的东西。
好的,所以我发现我不能仅仅依靠 $this->mpdf->Output('test.pdf',"I")
将我的结果(尽管它以前使用同一行工作)输出到浏览器。
因为某些原因它已经开始在 Content-Type
header 中发送 Content-Type:text/html
值所以我不得不改变它。
解决方案
我是这样做的:
return response($this->mpdf->Output('test.pdf',"I"),200)->header('Content-Type','application/pdf');