Получение вывода с URL. Как заставить загрузку PDF с URL-адреса с помощью php - PullRequest
0 голосов
/ 16 февраля 2012

Мне нужно извлечь наши отчеты из механизма отчетов 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);

Я не совсем уверен, как это сделать ... у кого-нибудь есть идеи?

Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 16 февраля 2012

как насчет

$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();
0 голосов
/ 16 февраля 2012

Вы можете буферизовать файл на 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;');

См. Примечания по использованию readfile поверх оболочки потока HTTP http://php.net/manual/en/function.readfile.php

...