2

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

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

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

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

谢谢!

卢卡斯

4

1 回答 1

2

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

但是,您可以做两件事。

1)从Play商店下载并安装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,在您的设备内存中创建它,然后意图将使用您设备上的adove阅读器通过您的应用程序打开它。

另一种选择是

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

于 2012-08-31T20:05:44.150 回答