PHP下载的PDF可以从Ubuntu打开,但不能从Windows打开

时间:2014-02-24 14:15:50

标签: php windows pdf ubuntu download

我的服务器上有一个PHP脚本,用于创建和下载PDF文件。我已经在我的Ubuntu台式计算机上的Chromium客户端上测试了它,它下载并打开正常。

当我尝试使用Windows 7和Windows 8 Chrome浏览器时,文件会下载,但系统无法打开该文件。错误读取,

  

“它不是受支持的类型,或者已经损坏......”。

以下是提示下载的PHP代码:

<?php
...
ob_start();

include 'show_report.php';

$content = ob_get_clean();

$tmpfname = tempnam("/var/www/phpAJAX/Reports/", "pdf_");
$handle = fopen($tmpfname, "w");
fwrite($handle, $content);
fclose($handle);



shell_exec('mv '.$tmpfname.' '.$tmpfname.'.html');
$output = shell_exec('wkhtmltopdf --page-size Letter '.$tmpfname.'.html '.$tmpfname.'.pdf');

//echo $content;

header("Content-disposition: attachment; filename=".$_GET['report_name'].".pdf");
header("Content-type: application/pdf");
readfile($tmpfname.'.pdf');


?>

只是想知道是否有人能够理解为什么会发生这种情况。

谢谢!

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的解决方案的链接:

http://board.phpbuilder.com/showthread.php?10372951-RESOLVED-Can-t-open-pdf-file-downloaded-via-php-header

如果您将标题更改为以下PHP代码,则PDF文件已正确下载并在Windows和ubuntu上正确打开。

header('Content-Description: File Transfer'); 
header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename="FILENAME"'); 
header('Content-Transfer-Encoding: binary'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize("PATH/TO/FILE")); 
ob_clean(); 
flush(); 
readfile(PATH/TO/FILE);      
exit();