【问题标题】:Retrieving output from a url. How do I force the dowload of a PDF from a url using php从 url 检索输出。如何使用 php 从 url 强制下载 PDF
【发布时间】:2012-02-15 21:46:55
【问题描述】:

我需要以 PDF 格式从 jasperserver 报告引擎检索我们的报告,然后我希望 PDF 被强制下载,而不是显示在浏览器中。在浏览器中显示的问题是我们不希望报表参数在 url 中显示给最终用户。

如果我在浏览器中输入这个 URL 路径,我会得到一个 PDF 文档,该文档显示在同一个浏览器窗口中,其中包含所有报告数据:

https://mysite.com:8443/jasperserver/flow.html?_flowId=viewReportFlow&reportUnit=sample_report&output=pdf;

我希望使用一个下载对话框,让用户将 PDF 下载到他们的计算机上,而不是显示在浏览器中。

我尝试了以下 php 代码,但无法使其正常工作。我得到一个 false 的返回值,但服务器日志中没有任何内容显示错误。

ob_start();
    header("Location: $src"); /* Redirect browser */
    $report_contents = ob_get_contents();
    ob_end_clean();
    var_dump($report_contents);

我真的不知道该怎么做...有人有什么想法吗?

感谢您的帮助。

【问题讨论】:

    标签: php url header file-get-contents ob-get-contents


    【解决方案1】:

    您可以将文件缓冲到 PHP 服务器,然后强制下载输出:

    header('Content-disposition: attachment; filename=huge_document.pdf');
    header('Content-type: application/pdf');
    readfile('https://mysite.com:8443/jasperserver/flow.html?_flowId=viewReportFlow&reportUnit=sample_report&output=pdf;');
    

    请参阅有关在 HTTP 流包装器上使用 readfile 的说明 http://php.net/manual/en/function.readfile.php

    【讨论】:

    • 感谢您的代码。我尝试提出您的建议,但出现错误:[Wed Feb 15 15:06:37 2012] [error] [client 209.33.199.176] PHP Warning: readfile() [function .readfile]:SSL 操作失败,代码为 1。OpenSSL 错误消息:\nerror:140773F2:SSL 例程:SSL23_GET_SERVER_HELLO:sslv3 警报意外消息,我不知道如何解决此问题。
    【解决方案2】:

    怎么样

    $source=$url
    header("Expires: 0");
    header("Cache-Control: private");
    header("Pragma: cache");
    
    header("Content-length: $size");
    header("Content-type: $type");
    header("Content-Disposition: attachment; filename=$name");
    readfile($source);
    exit();
    

    【讨论】:

    • 感谢您的帮助。当我添加上面的代码时,我收到以下错误: PHP 警告:readfile() [function.readfile]: SSL operation failed with code 1. OpenSSL Error messages:\ nerror:140773F2:SSL 例程:SSL23_GET_SERVER_HELLO:sslv3 警报意外消息
    • 可能需要切换到 curl over readfile() 它对 ssl 有更好的支持。
    • 谢谢,让 curl 输出内容,但无法下载 pdf 文档...如果我将报告检索为 html,那么我可以回显 html,但 pdf 报告什么也没做。有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2017-08-13
    • 1970-01-01
    • 2019-09-21
    • 2018-05-26
    • 2022-08-04
    • 2021-01-09
    相关资源
    最近更新 更多