PHP, использующий Guzzle для пропуска PDF, не работает при отображении в браузере - PullRequest
0 голосов
/ 12 ноября 2018

(ИСПРАВЛЕНО: см. Комментарий ниже.)

У меня есть веб-сайт с PHP, который обращается к REST-сервису, работающему с .NET Core. REST-API возвращает PDF за безопасность OAuth2.

Теперь я хочу, чтобы страница 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 уже был отправлен и вызвал эту ошибку.

Код выше верен.

...