Ajax and Downloading a PDF
Ajax and Downloading a PDF
我们有一个有趣的方法来使用自定义的内部框架来做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调用下载PDF?我知道 ajax 它自己不会下载文件 - 但我设置了所有内容,以便函数应该启动下载过程。
使用 AJAX 下载 PDF 意味着,在最简单的形式中,您必须逐位请求 PDF 的二进制数据。 有关通过 AJAX 请求然后解析和显示 PDF 文件的二进制块的示例,请查看 Mozilla 的 PDF.js 库,特别是它们的网络代码。
相反,如果您只想从服务器请求 PDF 并让它下载或在浏览器中显示,您应该简单地获取相关 PDF 的 URL(可以是您的自定义控制器或其他内容)并将window.location
设置为该值。 在您的示例中使用大纲,它可以像这样简单:
window.location.href = 'report/index/downloadProjectsInProgress';
您需要确保服务器代码添加 Content-disposition: attachment; filename=file.pdf
标头,这将强制window.location
更改下载文件,而不是尝试显示它。 这是一篇StackOverflow文章,描述了如何做到这一点。
- 如何使用javascript或html下载PDF格式的填写表单
- 如何将PDF作为二进制文件传递到window.open()
- javascript.点击显示嵌入的pdf
- Javascript/Jquery Blob not showing Chrome PDF
- 在提交时打开thankyou.html+下载PDF
- 生成pdf或其他非html文件时的错误处理
- how to convert html <div> to pdf
- 将画布转换为pdf:黑色背景
- 如何在不在本地下载的情况下将url中提供的文件(pdf/doc)转换为json/string/base64格式
- 以PDF附件的形式通过电子邮件发送谷歌文档
- 将Meteor中的base64 PDF作为电子邮件附件
- 无法执行文件.退出Acrobat PDF中的操作
- 在浏览器中检测本机或第三方PDF插件
- 下载HTML5/Javascript MOBILE应用程序中的PDF文件
- 下载所选语言的pdf文件
- 将网页转换为具有样式的pdf
- 在Internet Explorer中从二进制文件打开PDF
- 如何在jquery、javascript、HTML5中以base64字符串保存为(PDF、doc、xls、png.)
- 嵌入式pdf在Opera浏览器中总是名列前茅
- Ajax and Downloading a PDF