1

这似乎应该很简单。我有一组文件必须存储在 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,或附加到它的任何内容。如果我删除主题标签部分,脚本可以正常工作,并且 PDF 将打开且没有错误。当标签部分存在时,所有程序都告诉我 PDF 已损坏且无法打开。我似乎在这里或谷歌上找不到任何关于我需要做什么的信息。我需要设置一个额外的标题来模拟哈希标签吗?使用 exec() 调用一些命令行代码而不是使用 readfile()?

任何见解将不胜感激。

4

1 回答 1

3

您必须将 #page=2 (或您要打开的任何页面)附加到浏览器中的 URL,而不是代理脚本中的文件名。

您当前尝试myFile.pdf#page=2从不存在的文件系统打开文件,因为文件名是myFile.pdf

另一方面,在特定页面上打开 pdf 文件的功能是在浏览器或其 PDF 插件中实现的。因此,必须通过 URL 将打开哪个页面的信息提供给浏览器。所以你应该像这样调用你的代理脚本:http ://example.com/proxy.php?myFile.php#page=2

更新:

如果您想下载文件并在每次从用户的本地文件系统打开文件时在特定页面打开它,您将不得不编辑(或重新创建)PDF 文件。

于 2013-05-14T05:01:48.273 回答