在php中创建pdf为字符串,如下所示:
%PDF-1.4
(..skipping...)
/F1 9 Tf
0 g
BT
157 830 Td
(Lorem ) Tj
ET
(..skipping...)
8 0 obj
<</Type /Font /Encoding /WinAnsiEncoding /Subtype /Type1 /BaseFont /Helvetica >>
endobj
我的PHP代码:
//string it's pdf as plain text
return new Response($string);
在js中我使用ajax:
$("a#get_pdf").on('click', function(e){
e.preventDefault();
$.ajax('/get_pdf/');
});
我如何下载此文件,因为我的回复是纯文本,不喜欢文件。
- - - - - - - - 编辑
我可以这样做,就像在这个答案中一样: https://stackoverflow.com/a/34065784/4900669
-----编辑2 ----
但经过一些搜索,我编辑了我的js代码(https://stackoverflow.com/a/20830337/4900669):
$("a#get_pdf").on('click', function(e){
e.preventDefault();
$.ajax({
url: '/get_pdf/',
type: 'POST',
success: function() {
window.location = '/get_pdf/';
}
});
});
它的工作非常完美。
答案 0 :(得分:1)
首先,我不认为您需要将其设为ajax,只需让浏览器在空白窗口中打开链接。
然后,您需要修改标题以使下载成为可能,参考:Symfony2 - Force file download
这应该足以让它发挥作用!我希望它有所帮助
答案 1 :(得分:0)
明确禁止Javascript写入文件。您无法将Ajax调用与文件下载相结合。
您可以在当前文档中嵌入隐藏的iframe,然后将iframe指向将导致在浏览器中触发下载的内容。 e.g。
$("a#get_pdf").on('click', function(e){
e.preventDefault();
document.getElementById('someHiddenDiv').innerHTML="<iframe src='/get_pdf/'></iframe>";
}
但是你需要在包含pdf文件的响应的标题中至少设置mimetype。