我有一個JSF頁面,它使用支持bean將PDF文檔傳輸到瀏覽器。這個功能很好用,而且在iOS設備上測試這個功能之前,我還沒有遇到任何問題。JSF在iOS設備上流式傳輸PDF
在iPad和iPod Touch上的Safari上,PDF流最終只會在獲取響應時粘貼爲網頁上的不可滾動圖層。在桌面上的瀏覽器中,文件會提示保存或打開並使用Adobe Reader正確打開。這是一個問題,因爲只有部分PDF的第一頁顯示在iOS設備上,並且無法查看其他部分。
我已經在網絡上測試過這些設備上的其他PDF,它們的行爲不一樣。啓動PDF應用程序或Safari加載可滾動的預覽,這是預期的結果。有沒有其他人有這個?
我的支持bean正在將PDF的緩衝輸入流寫入輸出流。我已經設置了以下響應標頭:
response.setContentType ("application/pdf");
response.setContentLength(inputLength);
response.setHeader ("Content-Disposition", "inline;filename=\"" + saveFilename + ".pdf\"");
response.setHeader ("Cache-Control", "must-revalidate, post-check=0, pre-check=0, public");
我試圖將內容處置從內聯切換爲附件,但這並沒有幫助。
謝謝你的文章BalusC。我嘗試了將文件保存到臨時位置並使用servlet示例的方法,創建了映射到/ pdf /的servlet並再次嘗試請求。在桌面瀏覽器上,按照我的預期進行處理,提示打開或保存。在iOS上的Safari上,它的表現與以前一樣,即使使用response.redirect,也可以將PDF分層到現有網頁上。我開始認爲這是JSF和Safari的一個錯誤,但我不確定。這些是機密文件,所以我不能直接提供這些文件的URL。 – dlau
有趣。如何將靜態示例PDF放入公共webcontent並直接引用它以使'DefaultServlet'完成其工作? – BalusC
是的,比它工作得很好。 iOS設備打開它並認爲它是Microsoft Word文檔。 – dlau