在Android ICS中通过Web浏览器下载PDF文件

时间:2012-08-31 18:11:45

标签: android pdf browser

我需要在移动浏览器中显示PDF文档,而不询问用户是否要下载它。使用Safari(iOs)我可以完美地完成它,但当我尝试使用Android(版本ICS)本机浏览器(称为“Internet”)执行相同的操作时,文件被下载,甚至下载似乎也不起作用..下载完成后,文件显示为下载失败,我无法使用PDF文件阅读器打开它。

相同的链接下载工作正常是所有其他浏览器不移动。 我认为问题出在我需要添加到响应中的一些标题中。

我将 Content-Type 设置为 application / pdf Content-Disposition 设置为 inline; filename =“ report.PDF“

有没有人有同样的问题? 谁知道解决方案? :)

谢谢!

卢卡斯

1 个答案:

答案 0 :(得分: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 reader通过您的应用程序打开它。

另一种选择是

2)转到 http://jaspreetchahal.org/android-how-to-open-pdf-file-within-the-browser/ ,看看那个人是怎么做到的