2012-08-31 100 views
2

我需要在移動瀏覽器中顯示PDF文檔,而不詢問用戶是否要下載它。使用Safari(iOs)我可以完美地完成它,但是當我嘗試使用Android(版本ICS)本地瀏覽器(稱爲「Internet」)執行相同的操作時,該文件將被下載,甚至下載似乎也不起作用..下載完成後,該文件顯示爲下載不成功,我無法使用PDF文件閱讀器打開它。通過Web瀏覽器在Android中下載PDF文件ICS

同樣的鏈接下載工作正常所有其他瀏覽器誰不移動。 我相信問題出在我需要添加到響應中的一些頭文件中。

我設置內容類型應用/ PDF內容處置直列;文件名=「report.PDF」

是否有任何人誰了相同問題? 任何知道解決方案的人? :)

謝謝!

盧卡斯

+1

請回應下面的答案,說它是否對你有幫助 – krilovich

回答

2

Android的瀏覽器沒有內置的PDF支持默認所以這個不能輕易與實現。

但是這裏有兩件事你可以做。

1)下載,並從Play商店安裝Adobe Reader,然後嘗試下面的代碼

首先你在設備內存中創建一個文件,然後你閱讀PDF數據進去。 「theurl」是其中的PDF位於

InputStream in = null; 
File dst = new File(Environment.getExternalStorageDirectory()+"/myPDF.pdf"); 
    try { 
     in = theurl.openStream(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    }    
    OutputStream out = null; 
try { 
    out = new FileOutputStream(dst); 
} catch (FileNotFoundException e) { 

    // TODO Auto-generated catch block 
} 
    // Transfer bytes from in to out 
    try { 
     byte[] buf = new byte[100000]; 
     int len; 
    while ((len = in.read(buf)) > 0) { 
     out.write(buf, 0, len); 
    } 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
    try { 
    in.close(); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
    try { 
    out.close(); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
    Intent intent = new Intent(); 
    Uri path = Uri.fromFile(dst); 
    intent.setDataAndType(path, "application/pdf"); 
    startActivity(intent); 

這將下載的PDF格式,請在設備內存中創建它,然後意圖將使用adove讀者您的設備上打開它通過應用程序的URL。

另一種選擇是

2)進入http://jaspreetchahal.org/android-how-to-open-pdf-file-within-the-browser/,看到那傢伙是怎麼做的

+2

它爲我工作完全謝謝 – Csabi

+0

我只是不能修改它對我做的庫...但我不再在這個項目上工作了 –

+3

我投下了這個答案,因爲它不能解決文件下載的問題。該解決方案對於服務器而不是客戶端移動設備是必需的。即使瀏覽器無法查看某種未知格式的文件,至少應該允許將其保存,這就是問題所在。建議在移動設備上安裝某些東西是沒有意義的,因爲服務器很可能是任何客戶使用的公共服務,並且您不會爲了能夠使用您的網站而安裝任何東西。 – JustAndrei

相關問題