瀏覽器pdf檔案預覽的相關問題
阿新 • • 發佈:2019-02-15
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); } }) }