使用 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 标记 (?>) 以避免任何不需要的意外空格也是一个好主意在文件末尾,这可能会导致问题;并为您的字符串坚持使用一种完全标记 ' 或 "。
我有一个问题要问你。 我想在我的网络浏览器上显示 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 标记 (?>) 以避免任何不需要的意外空格也是一个好主意在文件末尾,这可能会导致问题;并为您的字符串坚持使用一种完全标记 ' 或 "。