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

发布于 2024-10-27 20:48:20 字数 286 浏览 6 评论 0原文

我正在使用 Yii Framework、TCPDF 和 jQuery 生成 pdf。

通过在表单中​​输入并使用ajax提交来生成pdf。

pdf已创建,但是当它返回到客户端时出现问题,它无法下载。

这是php代码 <代码> $pdf->Output('文件夹标签.pdf','D');

jQuery on success 函数有 <代码> 成功:函数(数据){ 窗口.打开(数据); }

我从这个网站得到的。

你能帮忙吗

I am using Yii Framework, TCPDF and jQuery to generate a pdf.

The pdf is generated by inputing in a form and submitting it using ajax.

The pdf is created but here is the problem when it returns to the client, it down not download.

here is the php code

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

the jQuery on success function has

success: function(data) {
window.open(data);
}

Which i got from this site.

Can you please help

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

瑕疵 2024-11-03 20:48:21

如果问题是您没有获得浏览器的 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();
}

这将导致浏览器下载文件。

If the problem is that you are not getting the browser's download dialog for the PDF, then the solution is to do it this way:

First, redirect the browser (using window.location as the other answers say) to navigate to a special controller action in your application, e.g. with this url: http://your.application.com/download/pdf/filename.pdf.

Implement the action referenced in the URL like this:

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();
}

This will cause the browser to download the file.

寄居人 2024-11-03 20:48:21

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

You need to save the PDF to somewhere on your server and then issue window.location = '/url/to/pdf-you-just-saved.pdf'; from your javascript. The users browser will then prompt them to download the PDF file.

ゞ花落谁相伴 2024-11-03 20:48:21

不完全是,这会在某些浏览器上导致错误,是设置窗口位置。

window.location.assign( downloadUrlToPdf );

因此

  1. 发送一个请求,通过 Ajax 向服务器生成 pdf 在服务器上
  2. 处理并生成 pdf 在
  3. Ajax 调用中返回刚刚创建的文件的 url
  4. 使用上面的代码片段打开该文件的下载

Not quite, that will cause errors on some browsers, this is the correct way to set the window location.

window.location.assign( downloadUrlToPdf );

So

  1. Send a request to make the pdf via Ajax to the server
  2. Process and generate the pdf on the server
  3. Return in the Ajax call the url to the file you just made
  4. Use the above code fragment to open a download of said file
可爱咩 2024-11-03 20:48:21

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

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

仅此而已

in tcpdf , just pass this argument the Output method:

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

that's all

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文