2012-08-31 101 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

相关问题