我试图从二进制流构建一个PDF文件,我收到它作为Ajax请求的响应.
通过XmlHttpRequest我收到以下数据:
%PDF-1.4....
.....
....hole data representing the file
....
%% EOF
Run Code Online (Sandbox Code Playgroud)
到目前为止我尝试的是通过嵌入我的数据data:uri.现在,它没有任何问题,它工作正常.不幸的是,它在IE9和Firefox中不起作用.可能的原因可能是FF和IE9在使用时遇到了问题data-uri.
现在,我正在寻找适用于所有浏览器的解决方案.这是我的代码:
// responseText encoding
pdfText = $.base64.decode($.trim(pdfText));
// Now pdfText contains %PDF-1.4 ...... data...... %%EOF
var winlogicalname = "detailPDF";
var winparams = 'dependent=yes,locationbar=no,scrollbars=yes,menubar=yes,'+
'resizable,screenX=50,screenY=50,width=850,height=1050';
var htmlText = '<embed width=100% height=100%'
+ ' type="application/pdf"'
+ ' src="data:application/pdf,'
+ escape(pdfText)
+ '"></embed>';
// Open PDF in new browser window
var detailWindow = window.open ("", winlogicalname, winparams);
detailWindow.document.write(htmlText);
detailWindow.document.close();
Run Code Online (Sandbox Code Playgroud)
正如我所说,它适用于Opera和Chrome(Safari尚未经过测试).使用IE或FF将显示一个空白的新窗口.
是否有任何解决方案,如在文件系统上构建PDF文件,以便让用户下载它?我需要适用于所有浏览器的解决方案,至少在IE,FF,Opera,Chrome和Safari中.
我无权编辑Web服务实现.所以它必须是客户端的解决方案.有任何想法吗?