下载 PDF - 无法打开

Posted

技术标签:

【中文标题】下载 PDF - 无法打开【英文标题】:Downloading PDF - can't open it 【发布时间】:2011-04-06 18:06:13 【问题描述】:

我让我的用户使用此代码下载 PDF 文件:

$db->Record['file'] 包含文档的相对路径。

访问加载 pdf 的虚拟页面,因此他们实际上看不到 url 中的“text.pdf”。我更改了文件的标题来实现这一点:

$downloadfile = '/data/srv/www/vhosts/htdocs'.$db->Record['file'];
$filename = basename($downloadfile);        
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="'.$filename.'"');        
readfile($downloadfile);

下载没有任何问题,但是当我尝试打开它时,出现以下错误:

The PDF file could not be openend, the type is not supported or the file
was damaged.

我该如何解决这个问题?

不是:当我直接下载文件时,意思是通过http://.../text.pdf访问并打开它,一切正常。

【问题讨论】:

下载的文件实际包含什么? 我敢打赌,文件中有 php 错误消息。 我敢打赌,这些 PHP 错误是由文件 htdocstext.pdf 不存在造成的。 【参考方案1】:

浏览器可能无法判断从文件中读取的预期长度。从php documentation,尝试在标题中添加文件大小:

header('Content-Length: ' . filesize($file));

【讨论】:

【参考方案2】:

(从 cmets 复制)我敢打赌,文件中有 PHP 错误消息。

【讨论】:

【参考方案3】:

您是否错过了第一行中htdocs 之后的/

【讨论】:

以上是关于下载 PDF - 无法打开的主要内容,如果未能解决你的问题,请参考以下文章

下载 PDF - 无法打开

下载的PDF文件小且无法打开 - Swift iOS

OA系统无法打开PDF文件,设置加载项发现Office Document Cache Handler无法启用,怎么设置?

修复PDF文档无法打开

三星手机不能预览pdf文件,只能下载图片

谷歌浏览器无法加载PDF文件,下载显示文件损坏?