这看起来应该很简单。我有一组文件必须存储在webroot之外,并且有一个访问脚本来调用它们。我有时还需要告诉必须通过此代理脚本调用的PDF才能在特定页面打开。脚本的相关部分如下:
header('Content-type: application/pdf');
header('Content-Length: ' . filesize($file));
header('Content-Disposition: attachment; filename="'.$file_name.'"');
readfile($file);$file_name只是文件的basename(),$file是文件的路径,后面加上#page=2、#page=10或其他任何东西。如果我删除了hashtag部分,脚本就可以正常工作,并且PDF打开时没有任何错误。当标签部分在那里时,所有的程序都告诉我PDF已经损坏,无法打开。我似乎在这里或谷歌上找不到任何关于我需要做什么的东西。我是否需要设置一个额外的头部来模拟hash标签?使用exec()来调用一些命令行代码,而不是使用readfile()?
任何见解都将不胜感激。
发布于 2013-05-14 13:01:48
您必须将#page=2 (或您想要打开的任何页面)附加到浏览器中的URL,而不是代理脚本中的文件名。
由于文件名为myFile.pdf,您当前尝试从不存在的文件系统中打开文件myFile.pdf#page=2
另一方面,在特定页面上打开PDF文件的功能是在浏览器或其PDF插件中实现的。因此,必须通过URL将打开哪个页面的信息提供给浏览器。所以你应该这样调用你的代理脚本:http://example.com/proxy.php?myFile.php#page=2
更新:
如果要下载文件并在每次从用户的本地文件系统打开文件时在特定页面打开它,则必须编辑(或重新创建)PDF文件。
https://stackoverflow.com/questions/16524260
复制相似问题