Firefox — невозможно загрузить или открыть пустой файл PDF Переполнение стека

Я сталкиваюсь с некоторыми проблемами при создании отчетов в формате PDF из моего приложения в Firefox (Ubuntu Machine).

мой код:

<?php
$path = "path_to_file" ;
$file = "test.pdf";
header('Content-type: application/pdf');
header("Content-disposition: attachment; filename=$file");
readfile($path);
return new Response("Success");

код работает:

  • когда PDF-отчет содержит данные
  • когда размер больше 1 кб
  • В окнах машина

не работает:

  • когда отчет не содержит данных или размер в байтах.
  • Это создание двоичного кода в новой вкладке браузера, а не создание пустого PDF.

Пожалуйста, помогите мне исправить эту проблему. Спасибо заранее.

1

Решение

Получил мой ответ. Это может помочь другим.

<?php
$path = "path_to_file" ;
$file = "test.pdf";
header("Content-disposition: attachment; filename= $file"); //Tell the filename to the browser
header("Content-type: application/pdf");//Get and show report format
header("Content-Transfer-Encoding: binary");
header("Accept-Ranges: bytes");
readfile($path); //Read and stream the file
get_curret_user();
1

Другие решения

Я бы сделал это таким образом, чтобы избежать некоторых проблем с браузерными приложениями и кэшированием. Дайте ему попытку:

<?php
$path = "path_to_file" ;
$file = "test.pdf";

$content = file_get_contents($path);
header("Content-disposition: attachment; filename=\"".$file."\"");
header("Content-type: application/force-download");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".strlen($content));
header("Pragma: no-cache");
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("Expires: 0");
echo $content;
die();

РЕДАКТИРОВАТЬ:

Если действительно необходимо использовать плагин pdf в браузере, а не загружать и сразу же открывать его с помощью соответствующей программы чтения PDF по умолчанию, замените

header("Content-type: application/force-download");

с

header("Content-type: application/pdf");
0

По вопросам рекламы [email protected]