У меня есть к вам вопрос.
Я хотел бы отобразить 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;
Вы можете мне помочь?
Заранее спасибо!
Вы не должны иметь 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 (?>), чтобы избежать нежелательных случайных пробелов в конце файла, которые могут вызвать проблемы; и придерживаться одного типа вполне знаков «или» для ваших строк.
Я пробовал это разными способами ..
Лучше всего сделать изображение с помощью 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);