我们从事的是Ajax在这里工作,在内部框架定制的一种有趣的方式,基本上是一些JavaScript函数一些,我做的事:Ajax和下载PDF
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或原始数据,并试图流的方式是抓住了一些内容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调用来下载PDF文件吗?我知道ajax是自己不会下载文件 - 但我设置了一切,使该功能应该开始下载过程。
为什么不只是'function downloadPdf(){window.location.href ='report/index/downloadProjectsInProgress?...'; ''? – Andreas
因为我们做ajax的方式不行 - 我没有创建框架 - 我只是用它工作。调用“控制器动作”的方式基本上与您的做法相同...接受我们的方式将报告转换为报告和索引以将索引和downloadProjectsInProgress转换为ajaxDownloadProjectsInProgress – LogicLooking
为什么要使用Ajax来编写pdf?只要做重定向和下载对话框将弹出而不离开页面... – Andreas