0

我需要从 jasperserver 报告引擎中以 PDF 格式检索我们的报告,然后我希望 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);

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

谢谢您的帮助。

4

2 回答 2

0

您可以将文件缓冲到 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;');

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

于 2012-02-15T21:53:05.290 回答
0

怎么样

$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();
于 2012-02-15T21:54:35.900 回答