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 に答える