【问题标题】:Download a PDF file in via Web Browser, in Android ICS在 Android ICS 中通过 Web 浏览器下载 PDF 文件
【发布时间】:2012-08-26 13:53:53
【问题描述】:

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

对于所有其他非移动浏览器,相同的链接下载工作正常。 我相信问题出在我需要添加到响应中的一些标头中。

我将 Content-Type 设置为 application/pdf 并将 Content-Disposition 设置为 inline;filename="报告.PDF"

有人遇到过同样的问题吗? 谁知道解决方案? :)

谢谢!

卢卡斯

【问题讨论】:

  • 请回复下面的答案,说明它是否对您有帮助

标签: android pdf browser


【解决方案1】:

android 浏览器没有默认的内置 PDF 支持,因此无法轻松做到这一点。

但是,您可以做两件事。

1) 从play store下载安装adobe reader,然后试试下面的代码

首先在设备内存中创建一个文件,然后将 pdf 数据读入其中。 “theurl”是pdf所在的url

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,在您的设备内存中创建它,然后 Intent 将使用您设备上的 adove reader 通过您的应用程序打开它。

另一种选择是

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

【讨论】:

  • 我只是无法修改对我有用的库......但我不再从事这个项目了
  • 我否决了这个答案,因为它不能解决文件下载的问题。服务器需要该解决方案,而不是客户端移动设备。即使浏览器无法查看某种未知格式的文件,至少它应该允许保存它,这就是问题所在。建议在移动设备上安装一些东西是没有意义的,因为服务器很可能是一项公共服务,可供任何客户使用,而且您不会让他们安装任何东西来使用您的网站。
猜你喜欢
  • 2019-08-24
  • 1970-01-01
  • 2016-12-22
  • 2013-03-22
  • 1970-01-01
  • 2018-05-15
  • 2016-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多