firefox和chrome浏览器可以直接预览是因为自身带了pdf阅读器插件,而ie和safari浏览器默认下载,需安装插件才能在浏览器中预览。
1、加了PDFObject插件,该插件只是给页面加了<embed>元素,如何浏览器不支持embedded PDFs,PDFObject插件是不能够迫使浏览器实现在线预览。如果需要支持,可以用PDF.js插件。
2、访问的pdf文件是阿里云上的地址,在所有的浏览器里都默认下载,因为http请求的相应头Content-Type的值是application/octet-stream(二进制流),浏览器无法识别pdf文件,解决办法是服务端访问阿里云地址,下载后直接将流数据传给前端,修改相应头信息Content-Type:application/pdf,Accept-Ranges:bytes
js代码如下:
//查看电子申请表
function checkselftel2_applyform_show(){
$.post(checkselftel2_g_url.pdfpreview,{"id":checkselftel2_userid,"orderType":"03"},function(data){
if(data.success){
var url=data.result.userSignfileUrl;//获取阿里云pdf的url
if(url){
$.post(checkselftel2_g_url.pdfdream+"?fileurl="+url,{},function(data){//获取服务端返回的流数据
if(data){//有返回
//调用PDFObject插件
var myPDF = PDFObject.embed(checkselftel2_g_url.pdfdream+"?fileurl="+url, "#checkselftel2_pdf_object");
$("#checkselftel2_pdf_out").dialog({
title:"查看电子申请表",
width:800
})
}else{//无返回(包括url地址不存在,请求超时,异常)
$.longhz.alert("获取电子申请表异常");
}
})
}else{
$.longhz.alert("暂无电子申请表");
}
}else{
$.longhz.alert(data.msg);
}
})
}