小编Seb*_*bb0的帖子

如何使用javascript从Web服务返回的二进制字符串构建PDF文件

我试图从二进制流构建一个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服务实现.所以它必须是客户端的解决方案.有任何想法吗?

javascript pdf jquery cross-browser binary-data

46
推荐指数
4
解决办法
9万
查看次数

标签 统计

binary-data ×1

cross-browser ×1

javascript ×1

jquery ×1

pdf ×1