Chrome在内联PDF中"无法加载PDF文档"错误消息

eas*_*der 7 php pdf google-chrome

我在使用PHP阅读Chrome中的pdf文件时遇到问题.

以下代码是我在PHP中的操作方式

$path = "actually file path";
header("Pragma: public");
header("Expires: 0");
header("Content-type: $content_type");
header('Cache-Control: private', FALSE);
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header("Content-Disposition: inline; filename=\"$filename\"");
header('Content-Transfer-Encoding: binary');
header('Content-Length' . filesize($path));
ob_clean();
flush();
readfile($path);
Run Code Online (Sandbox Code Playgroud)

在这里,我将Content-Disposition设置为内联.因为如果用户浏览器具有内置pdf查看器插件,我想显示pdf文件.您可能知道,Chrome内置了pdf查看器.

问题是我在服务器上有一堆pdf文件.Chrome只能查看其中一些内容.我无法弄清楚为什么其他人不能以同样的方式工作.我检查了每个文件的权限.看起来不是许可问题.

有谁知道问题是什么?谢谢.

小智 12

我一直在努力解决同样的问题.这与我在各种浏览器中获得一致结果非常接近.我认为你可能遇到问题的原因是,如果某些PDF文件太大而无法正确处理readfile().试试这个:

$file = "path_to_file";
$fp = fopen($file, "r") ;

header("Cache-Control: maxage=1");
header("Pragma: public");
header("Content-type: application/pdf");
header("Content-Disposition: inline; filename=".$myFileName."");
header("Content-Description: PHP Generated Data");
header("Content-Transfer-Encoding: binary");
header('Content-Length:' . filesize($file));
ob_clean();
flush();
while (!feof($fp)) {
   $buff = fread($fp, 1024);
   print $buff;
}
exit;
Run Code Online (Sandbox Code Playgroud)