使用 PHP 在浏览器中预览 PDF 文件

Preview a PDF file in browser with PHP

我有一个问题要问你。 我想在我的网络浏览器上显示 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;

你能帮帮我吗?

提前致谢!

我尝试过不同的方法.. 最好的方法是用 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);

你不能在 headers 之前有一个 var_dump()(除非你在没有告诉我们的情况下使用输出缓冲)。发送headers前一定不能有任何输出。此外,如果您使用 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 标记 (?>) 以避免任何不需要的意外空格也是一个好主意在文件末尾,这可能会导致问题;并为您的字符串坚持使用一种完全标记 ' 或 "。