Как скачать файл PDF, созданный из TCPDF (PHP) с помощью AJAX (jQuery)? - PullRequest
6 голосов
/ 31 марта 2011

Я использую Yii Framework, TCPDF и jQuery для создания PDF.

PDF создается путем ввода в форму и отправки его с помощью ajax.

PDF создан, но вот проблема, когда он возвращается к клиенту, он не загружается.

вот код php $pdf->Output('Folder Label.pdf','D');

функция jQuery on success имеет success: function(data) { window.open(data); }

Что я получил с этого сайта.

Не могли бы вы помочь

Ответы [ 4 ]

3 голосов
/ 01 апреля 2011

Если проблема в том, что вы не получаете диалоговое окно загрузки браузера для PDF, то решение состоит в том, чтобы сделать это следующим образом:

Сначала перенаправьте браузер (используя window.location в качестве других ответов).скажем), чтобы перейти к специальному действию контроллера в вашем приложении, например, с помощью этого URL: http://your.application.com/download/pdf/filename.pdf.

Реализуйте действие, указанное в URL, следующим образом:

public function actionPdf() {
    header('Content-Type: application/pdf');
    header('Content-Disposition: attachment; filename="filename.pdf";');
    header('Content-Length: '.filesize('path/to/pdf'));
    readfile('path/to/pdf');
    Yii::app()->end();
}

Это приведет кбраузер для загрузки файла.

1 голос
/ 31 марта 2011

Вам нужно сохранить PDF-файл где-нибудь на вашем сервере, а затем выдать window.location = '/url/to/pdf-you-just-saved.pdf'; из вашего javascript.Затем браузер пользователей предложит им загрузить файл PDF.

0 голосов
/ 06 января 2016

в tcpdf, просто передайте этот аргумент Метод вывода:

$pdf->Output('yourfilename.pdf', 'D'); 

вот и все

0 голосов
/ 31 марта 2011

Не совсем, это приведет к ошибкам в некоторых браузерах, это является правильным способом установки местоположения окна.

window.location.assign( downloadUrlToPdf );

Итак

  1. Отправить запрос на создание pdf через Ajax на сервер
  2. Обработка и генерация pdf на сервере
  3. Возврат в Ajax вызов URL для файла, который вы только что сделали
  4. Используйте приведенный выше фрагмент кода, чтобы открыть загрузку указанного файла
...