首页 > 解决方案 > PHP使用Guzzle通过PDF在浏览器中显示时不起作用

问题描述

(已修复:请参阅下面的评论。)

我有一个运行 PHP 的网站,该网站访问运行 .NET Core 的 REST 服务。REST-API 在 OAuth2 安全性之后返回 PDF。

现在我希望 PHP 页面通过内存中的 PDF。

我在做某事。像这样:

$getPdfUrl = "https://<my url>";
$response = $guzzleClient->request("GET", $getPdfUrl, array("headers" => array("Authorization" => "Bearer <access token>")));

$lengthArray = $response->getHeader('Content-Length');
$length = $lengthArray[0];

header('Content-Type: application/pdf; charset=utf-8');
header('Content-Length: '.$length);
header("Content-Disposition: inline; filename='details.pdf'");

echo $response->getBody()->getContents();

如果我使用 Content-Dispositon 作为附件,这非常有效。PDF没问题。

但是,当我内联执行此操作时,我会看到像https://i.stack.imgur.com/SQYQ4.png这样的二进制垃圾。我的目标是通过浏览器直接显示 PDF。

我想这是一个小错误,但我没有看到。

更新:感谢下面的评论。两者都是正确的。我与我自己的(已删除)评论相矛盾并同意。由于使用过的 CMS 的某些魔力,text/html 标头已被发送并导致该错误。

上面的代码是正确的。

标签: phppdfguzzlerest-client

解决方案


推荐阅读