1. 程式人生 > >瀏覽器pdf檔案預覽的相關問題

瀏覽器pdf檔案預覽的相關問題

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);
		}
	})
}