【发布时间】:2013-10-30 17:50:46
【问题描述】:
我们有一种有趣的方式来使用自定义的内部框架来执行 ajax,主要是在我做的一些 javascript 函数中:
CT.postSynch('report/index/downloadProjectsInProgress', {}, function(data){
});
这告诉 ajax 寻找一个名为 Report 的模块、一个名为 Index 的控制器和一个名为 ajazDownloadProjectInprogress 的操作
我编写了一个函数 ajazDownloadProjectInprogress,它所做的只是根据我返回的一些数据创建一个简单的 PDF。在该函数中,我有以下内容(使用 DOMPDF),如下所示:
$dompdf = new DOMPDF();
$content = $this->raw('./report.header','./projectsInProgressReport','./report.footer');
$dompdf->load_html($content);
$dompdf->render();
$dompdf->output();
header('Pragma:');
header('Cache-Control: private,no-cache');
return $dompdf->stream("Structure Report - ProgressReports.pdf", array('Attachment' => 1));
我在这里所做的只是根据我们将视图呈现为 html 或原始数据的方式获取一些内容,并尝试通过 ajax 将 pdf 流式传输回来。
在上面的代码中,我向您展示了我们如何处理 ajax 调用,我做到了:
CT.postSynch('report/index/downloadProjectsInProgress', {}, function(data){
return data;
});
现在网络标签显示我:
%PDF-1.3
1 0 obj
<< /Type /Catalog
/Outlines 2 0 R
/Pages 3 0 R >>
endobj
2 0 obj
<< /Type /Outlines /Count 0 >>
endobj
3 0 obj
<< /Type /Pages
/Kids [6 0 R
]
/Count 1
/Resources <<
/ProcSet 4 0 R
/Font <<
/F1 8 0 R
/F2 9 0 R
>>
/XObject <<
/I1 10 0 R
/I2 11 0 R
这只是返回的示例......
有人知道您想通过 ajax 调用下载 PDF 吗?我知道 ajax 它本身不会下载文件 - 但我设置了所有内容,以便该功能应该开始下载过程。
【问题讨论】:
-
为什么不只是
function downloadPdf() { window.location.href = 'report/index/downloadProjectsInProgress?...'; }? -
因为我们做 ajax 的方式不起作用 - 我没有创建框架 - 我只是使用它。调用“控制器操作”的方式基本上与您的操作方式相同......接受我们的方式将报告转换为报告,将索引转换为索引,并将 downloadProjectsInProgress 转换为 ajaxDownloadProjectsInProgress
-
为什么要为 pdf 使用 Ajax?只需执行重定向,无需离开页面就会弹出下载对话框...
-
Any one know what your suppose to do to download a PDF through an ajax call? I know ajax it's self will not download the file你自己已经回答了这个问题。在页面上创建一个 iframe 并将 src 设置为所需的 url。 -
对不起,我之前的错误,这是我提出的解决方案:Dompdf and Ajax Download
标签: javascript php jquery ajax pdf