我們從事的是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