@AlexSer

Как от Ajax запроса получить PDF в yii2?

Привет! Подскажите как сделать чтобы сформированный документ PDF не открывался в браузере, а сразу скачивался в Yii2.
5bb366ea9b991233094834.png
После нажатия Сформировать необходим чтобы скачался PDF- документ в бразуере.
public  function  actionStatdata(){
  $pdf = new Pdf([
            'mode' => Pdf::MODE_UTF8, // leaner size using standard fonts
            'format' => Pdf::FORMAT_A4,
            'content' => $this->renderPartial('statdata'),
            'options' => [
                'title' => 'Privacy Policy - Krajee.com',
                'subject' => 'Generating PDF files via yii2-mpdf extension has never been easy'
            ],
            'methods' => [
                'SetHeader' => ['Создано  ' . date('d.m.Y H:s:i')],
                'SetFooter' => [''],
            ]
        ]);
        return $pdf->render();

    }

при нажатий cформировать отправляется ajax запрос
$('#sformirovat').click(function() {
        $.ajax({
                 url:'/list/statdata',
                 type:"POST",
                 data:{
         
                     },
                 success:function(data) {
                console.log(data);
                }
            });
});


Как отрыть в новом окне умею, а вот как заставить скачать после запроса не знаю.
  • Вопрос задан
  • 805 просмотров
Решения вопроса 2
@Quieteroks
php программист
Есть замечательная функция в Response:
return \Yii::$app->response->sendFile($file->getPath(), $file->name);

Ну и все семейство подобных функций, как например: sendStreamAsFile()

Можно конечно попробовать сам PDF настроить на рендеринг в php://output и он будет отправлен, но возможно без правильных заголовков. Это нужно уточнить в той библиотеке, что вы используете.
Ответ написан
Комментировать
myks92
@myks92 Куратор тега Yii
Нашёл решение — пометь вопрос ответом!
Второй вариант это использовать параметр в mpdf

'destination' => Pdf::DEST_DOWNLOAD,

'pdf' => [
            'class' => Pdf::classname(),
            'mode' => Pdf::MODE_UTF8,
            'format' => Pdf::FORMAT_A4,
            'orientation' => Pdf::ORIENT_PORTRAIT,
            'destination' => Pdf::DEST_DOWNLOAD,
            'marginTop' => 15,
            'marginLeft' => 10,
            'marginRight' => 10,
            //'cssFile' => '@backend/web/css/print-pdf.css',
            'defaultFontSize' => 12,//размер шрифта
            'filename' => Yii::$app->name.'.pdf',
            'methods' => [
                //'SetHeader' => ['Service Desk||Generated On: ' . date("Y-m-d H:i:s")],
                'SetFooter'=>[
                    'content' => '{DATE j-m-Y H:m} || #{PAGENO}',
                ],
            ]
        ],
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы