(ИСПРАВЛЕНО: см. Комментарий ниже.)
У меня есть веб-сайт с 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 уже был отправлен и вызвал эту ошибку.
Код выше верен.
Задача ещё не решена.
Других решений пока нет …