【问题标题】:echo a PDF-file from server从服务器回显 PDF 文件
【发布时间】:2016-12-10 17:57:12
【问题描述】:

有没有办法echo 一个 PDF 文件作为对用 javascript 编写的客户端请求的响应并让用户查看它?

我正在使用 FPDF 生成 PDF,我可以使用 $pdf->Output($filename, "F");-function 但我无法直接通过 url 从客户端访问存储文件的目录。

这意味着我确实不希望用户能够以任何方式直接访问我服务器上的原始文件

所以这样的东西是行不通的:

header("Content-type: application/pdf");
header("Content-Disposition: inline; filename=filename.pdf");
@readfile('path\to\filename.pdf');

或:

echo "<iframe src=\"file.pdf\" width=\"100%\" style=\"height:100%\"></iframe>";

是否有可能将 PDF 文件转换为字符串,例如将图像转换为 base64,回显它,然后使用 javascript 将其重新转换回可读的 PDF?

【问题讨论】:

  • 为什么不能使用readfile
  • 您写道:“然后用 javascript 重新翻译” - 如果用户禁用了 JS 怎么办?你又回到了Square One,不得不求助于服务器端的方法。如果您不希望他们找出该文件的位置,请将其放在您的公共区域之外。您还需要更改href 的指针(如果有的话)。我看到的只是&lt;iframe&gt;
  • 您应该能够使用readfile 方法将PDF文件从允许PHP脚本保存到的任何地方发送。这包括DocumentRoot之外的文件夹,因此可以防止窥探
  • 仅供参考,即使您不向用户提供指向您的 PDF 的直接链接,他们也可以在显示 PDF 时进行保存。您无法控制 PDF 查看器允许用户执行的操作,也无法阻止用户拦截流量并以这种方式保存。

标签: javascript php pdf


【解决方案1】:

如果您使用 readfile + htaccess,如果您不想这样做,没有人可以访问您的 pdf。在您的示例中使用 header() 和 readfile() 并使用 htaccess 或 httpd.ini (如果您使用 apache)阻止对目录的访问。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多