如何使用AJAX(jQuery)下载从TCPDF(PHP)生成的PDF文件?

时间:2011-03-31 13:17:40

标签: php jquery ajax yii tcpdf

我使用Yii Framework,TCPDF和jQuery生成pdf。

pdf是通过输入表单并使用ajax提交来生成的。

创建了pdf但是当它返回到客户端时出现问题,而不是下载。

这是php代码 $pdf->Output('Folder Label.pdf','D');

成功函数的jQuery有 success: function(data) { window.open(data); }

我从这个网站得到的。

你能帮忙吗

4 个答案:

答案 0 :(得分:3)

如果问题是您没有获得PDF的浏览器下载对话框,那么解决方案就是这样做:

首先,重定向浏览器(使用window.location,如其他答案所示)导航到应用程序中的特殊控制器操作,例如:使用此网址: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 :(得分:1)

您需要将PDF保存到服务器上的某个位置,然后从您的javascript发出window.location = '/url/to/pdf-you-just-saved.pdf';。然后,用户浏览器将提示他们下载PDF文件。

答案 2 :(得分:0)

不完全是,这会导致某些浏览器出错,this是设置窗口位置的正确方法。

window.location.assign( downloadUrlToPdf );

所以

  1. 发送请求以通过Ajax将pdf发送到服务器
  2. 在服务器上处理并生成pdf
  3. 在Ajax中返回调用您刚创建的文件的URL
  4. 使用上面的代码片段打开所述文件的下载

答案 3 :(得分:0)

在tcpdf中,只需将此参数传递给Output方法:

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

这就是全部