从PHP代理服务文件时,使用#page = n在特定页面打开PDF

时间:2013-05-13 14:15:18

标签: php pdf proxy

这似乎应该很简单。我有一组文件,我必须存储在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已损坏且无法打开。 我似乎无法在这里或Google上找到任何关于我需要做什么的事情。我是否需要设置额外的标头来模拟散列标记?使用exec()调用一些命令行代码而不是使用readfile()?

非常感谢任何见解。

1 个答案:

答案 0 :(得分:3)

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

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

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

<强>更新

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