我需要在移动浏览器中显示PDF文档,而不询问用户是否要下载它。使用Safari(iOs)我可以完美地完成它,但当我尝试使用Android(版本ICS)本机浏览器(称为“Internet”)执行相同的操作时,文件被下载,甚至下载似乎也不起作用..下载完成后,文件显示为下载失败,我无法使用PDF文件阅读器打开它。
相同的链接下载工作正常是所有其他浏览器不移动。 我认为问题出在我需要添加到响应中的一些标题中。
我将 Content-Type 设置为 application / pdf , Content-Disposition 设置为 inline; filename =“ report.PDF“
有没有人有同样的问题? 谁知道解决方案? :)
谢谢!
卢卡斯
答案 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/ ,看看那个人是怎么做到的