2013-01-10 64 views
1

PDF文件在服務器端生成並推送到客戶端進行下載。雖然下載適用於Windows上的所有瀏覽器,但在IPAD上失敗。 請指教。PDF文件下載不適用於iPad特定瀏覽器

規格:OS 6,使用Safari 6.1,Chrome的23.0.1271.100

請注意:在這個應用PDF不會下載到一個新的URL(NO重定向)。

一般行爲:IPad瀏覽器(safari/chrome)不支持下載窗口,因此它預計會打開pdf並提供選項來查看PDF兼容的應用程序。目前沒有發生。

當調試下載下面的servlet的動作代碼,在服務器,但瀏覽器在iPad上成功生成PDF文件不顯示:-(

代碼示例:

/**設置響應頭**/

 response.setHeader("Content-Type", "application/pdf"); 
     response.setHeader("Content-Disposition", "attachment;filename=sample.pdf"); 
     response.setHeader("Connection", "close"); 
     response.setHeader("Cache-Control","cache"); 
     response.setHeader("Pragma","cache"); 
     response.setDateHeader ("Expires", dt.getTime() + 100000); 

/**寫入輸出**/

 InputStream stream = info.getInputStream(); 
     OutputStream os = response.getOutputStream(); 
     try { 
      response.setContentType(contentType); 
      copy(stream, response.getOutputStream()); 
     } 
     finally { 
     if (stream != null) { 
     stream.close(); 
     } 
} 

回答

1

要顯示pdf而不是要求瀏覽器保存它,請使用「內聯」而不是「附件」。

response.setHeader("Content-Disposition", "inline;filename=sample.pdf"); 

此外,你設置的內容類型兩次,一次在頭,並使用setContentType()一次。 我不確定這兩個標題是否相互作用或互相取消,所以不能確定它是錯誤的來源,但它似乎是要考慮更改的東西。

+0

1. Content-Disposition「inline」在OS上似乎起作用。試用Safari和Chrome瀏覽器。 2.有趣的一點是setHeader(Content-Type,xxx)v/s setContentType 嘗試過排列組合並沒有幫助Ipad,但在Windows上Firefox明確顯示setContentType是必須的。 我的問題仍未解決。你的洞察力會有很大的幫助。 –

2

經過測試,上面粘貼的下載操作代碼似乎工作正常,因爲問題是BROWSER特定的。

Andriod平板電腦 - Firefox瀏覽器將pdf下載到彈出窗口。 IPad:Safari - FIX:強制內容在新標籤中打開,如下所示:

window.open(print_url);

其中print_url是baseurl + action.do + additional_parameter。

相關問題