我正在使用jQuery的Ajax方法访问现有的WCF Web服务(返回PDF字节流)。
当服务调用完成时,我得到一个包含PDF的JavaScript变量 (该变量包含二进制数据,以"%PDF-1.4..."开头)。
我想在新的浏览器窗口中显示这个PDF,但是我很难实现这一点。
到目前为止,我的研究显示,我可以使用data: uri来达到我想要的效果,因此当Ajax调用完成时,我的代码如下:
function GotPDF(data)
{
// Here, data contains "%PDF-1.4 ..." etc.
var datauri = 'data:application/pdf;base64,' + Base64.encode(data);
var win = window.open("", "Your PDF", "width=1024,height=768,resizable=yes,scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no");
win.document.location.href = datauri;
}
这会导致一个新的浏览器窗口打开,但内容为空。
有趣的是,如果我使用文件URI(例如file://c:/tmp/example.pdf)将我的浏览器(IE9)指向本地磁盘上的现有文件,则会得到相同的结果,即一个空白窗口。
有没有办法显示这个PDF数据?