【发布时间】:2014-03-14 09:02:17
【问题描述】:
我正在使用 php 和 TCPDF 从多个 MySQL 查询生成自定义 PDF 文件。一旦用户单击“生成 PDF”按钮,就会打开一个新选项卡并开始 PDF 过程。构建 PDF 平均需要大约 10 秒。文件准备好后,浏览器会关闭空白页面并显示另存为对话框窗口。
我想在创建 PDF 时向用户显示某种类型的消息。谈到 AJAX/JQUERY,我有点菜鸟,但我尝试实施了几种解决方案,但都没有成功。
注意事项:
- 后端是 Joomla!
- 使用
$pdf->Output('example.pdf','D')生成pdf - 在
$pdf-Output之前使用 ob_end_clean 以避免“TCPD:数据已输出”错误。
我尝试了在页面末尾添加<div> 的方法以及在页面加载时显示动画 gif 的一些 jQuery/CSS。它没有用,我不知何故觉得这是由 ob_end_clean 或 Joomla!框架。
【问题讨论】:
-
我建议您设置
Header('Content-disposition: attachment'),这样就不会打开任何窗口。这样,我相信文件只会通过浏览器的普通文件下载器下载。像这样的东西:header('Content-Disposition: attachment; filename="downloaded.pdf"');header('Content-type: application/pdf'); -
我正在通过 POST 将所需信息发送到新页面。由于我们在 TCPDF 中使用的 HTML/CSS 格式,我无法在同一页面上输出 PDF。它非常敏感,因此首选在干净的页面上构建 PDF。我也不能切换 PDF 类,因为它花了很长时间才用 TCPDF 做到这一点。
-
我了解,我也使用过 TCPDF。如果你想要一个进度条,你将不得不通过 AJAX 发送你的 POST 数据。
-
那么如果我通过 AJAX 发送 POST 数据,我之前描述的 AJAX 方法应该可以工作吗?
-
ajax是用来接收数据和改变进度条值的,首先你必须在服务器端处理进度状态