如何使用javascript从web服务返回的二进制字符串生成PDF文件
我正在尝试从二进制流构建一个PDF文件,作为Ajax请求的响应。
通孔XmlHttpRequest我收到以下数据:
%PDF-1.4....
.....
....hole data representing the file
....
%% EOF
到目前为止,我尝试的是通过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();
正如我说过的,它在Opera和Chrome上运行得很好(Safari还没有经过测试)。使用IE或FF将弹出一个空白的新窗口。
有没有类似于在文件系统上构建PDF文件以便让用户下载的解决方案?我需要的解决方案,在所有的浏览器,至少在IE,FF,Opera,Chrome和Safari。
我没有编辑Web服务实现的权限.所以这必须是客户端的解决方案。有什么想法吗?
明月笑刀无情
相关分类