Предварительный просмотр PDF-файла в браузере с переполнением стека

У меня есть к вам вопрос.
Я хотел бы отобразить PDF на свой веб-браузер.

Кроме того, я сделал этот код. Он работает с Firefox, но, к сожалению, не с Chrome.

$content = file_get_contents($path);
var_dump($content);
header("Content-Disposition: inline; filename=$path");
header('Content-Transfer-Encoding: binary');
header("Content-type: application/pdf");
header("Cache-Control: private, must-revalidate, post-check=0, pre-check=0, public");
header("Pragma: public");
header("Accept-Ranges: bytes");
echo $content;

Вы можете мне помочь?

Заранее спасибо!

1

Решение

Вы не должны иметь var_dump() перед заголовками (если вы не используете буферизацию вывода, не сказав нам). Перед отправкой заголовков не должно быть никакого вывода. Кроме того, если вы используете var_dump() выгрузить содержимое PDF, которое представит окружающие артефакты, которые, вероятно, вызывают проблемы у большинства средств просмотра PDF.

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

<?php
$path = './path/to/file.pdf';

header('Content-Type: application/pdf');
header('Content-Disposition: inline; filename='.$path);
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');

readfile($path);

Кроме того, как правило, это также хорошая идея не использовать закрывающий тег PHP (?>), чтобы избежать нежелательных случайных пробелов в конце файла, которые могут вызвать проблемы; и придерживаться одного типа вполне знаков «или» для ваших строк.

1

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

Я пробовал это разными способами ..
Лучше всего сделать изображение с помощью Imagick и отобразить его.
или же
уменьшить с Ghostscript …

Таким образом, вы можете сделать предварительный просмотр, и это легко со всеми браузерами ..
Для создания PDF-> PNG я делаю так:

$save_to = '.png';
exec('convert -density 300 -trim "'.$file.'" -resize 1000 -quality 85 -colorspace RGB -background white  "'.$destination.$save_to.'" &', $output, $return_var);

& в конце пункта назначения разрешите делать разные изображения для многостраничного pdf, например:
изображения 1.png
изображения 2.png
….

Если вы хотите показать PDF, но меньше, вы можете уменьшить PDF, но все браузеры не показывают PDF одинаково …

Мой код для уменьшения PDF выглядит так:

exec('gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook  -dNOPAUSE  -dBATCH -sOutputFile='.$output_file.' '.$file.' ',$output, $return_var);
1

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