安卓 - 加载PDF / PDF阅读器

25

我想在Webview上显示PDF内容。

这是我的代码:

WebView webview = new WebView(this); 
setContentView(webview); 
webview.getSettings().setJavaScriptEnabled(true); 
webview.loadUrl("URL/Demo_PDF.pdf");

问题:

当我尝试运行应用程序时,屏幕变成了空白。

另外,如果有任何PDF阅读器的话,请也向我推荐!!

顺便说一下,我已经设置了互联网权限。


2
对于所有人,“这个问题现在太旧了,当时没有PDF查看器/阅读器,所以我用了这个解决方案。” - Paresh Mayani
4个回答

50

最终,我找到了解决方案,实际上我采用了一个技巧,在Webview中使用Google Docs加载PDF文件:

webview.loadUrl("http://docs.google.com/gview?embedded=true&url=http://myurl.com/demo.pdf");

4
你是否在代码中使用了 setJavaScriptEnabled(true)?(@anticafe) - Paresh Mayani
1
哦,我明白了。默认情况下,安卓的WebView会禁用Javascript。所以每次创建一个WebView时,我们都必须设置Javascriptenabled为true。 - anticafe
1
你们为什么都发布相同的解决方案来回答这个问题?这不是PDF离线阅读的解决方案。 - emeraldhieu
1
@Emerald214请注意问题日期,当时muPDF和其他类型的API和库还没有推出。 - Paresh Mayani
1
@MehulJoisar,所以呢!最终你可以免费获得PDF阅读器 :) - Paresh Mayani
显示剩余9条评论

10

抱歉,WebView无法显示PDF内容。
您可能需要一个响应PDF MIME类型的PDF查看器。

以下是一些您可能想要检查的免费开源库:


那么这个 MIME 类型怎么办:android:mimeType="application/pdf"? - Paresh Mayani
请查看此链接:https://dev59.com/n3E85IYBdhLWcg3wbS1h - systempuntoout

1

WebView没有PDF插件。您应该将PDF文件存储在本地,并打开一个意图来查看这种类型的内容。


这个想法我认为很有帮助,但是我需要打开 Intent,用哪个应用程序可以使用 Intent? - Paresh Mayani

1

您可以尝试使用mupdf(www.mupdf.com)。 您可以构建一个本地代码库(libmupdf.so),并使用ndk将其加载到您的Android项目中。 这将确保更快速地呈现PDF文件... 请查看该项目:http://mupdf.com/repos/mupdf/android/


我成功地构建了库(libmupdf.so)。 - Roy Samuel
我还不了解NDK,所以很难实现,你能把已经构建好的库传给我吗? - Paresh Mayani
目前,我构建的库为pdf中的所有页面生成png文件,并将原始光栅数据存储到sd卡中。要在Android上将pdf呈现为“视图”,您需要参考“mupdf-android”项目。如果需要,我可以分享我构建的库。 - Roy Samuel
Roy,请你传递一下你编译好的"libmupdf.so"库,谢谢?sachin6670i@gmail.com - Samuh
抱歉耽搁了,文件相当大,达到了7MB。此外,我开发的界面仅用于导出光栅数据... 如果需要编程方面的帮助,请告诉我... - Roy Samuel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接