如何在Android的WebView中打开PDF文件?

3
我使用itext库生成了一个PDF文件并将其保存在SD卡中。我需要在webview中打开这个PDF文件,但是当我搜索解决方案时,我发现我可以使用在线谷歌文档服务打开它,但我的PDF文件存储在SD卡中。有没有办法在webview中从外部存储打开PDF文件?

不好意思,在Android中是不可能的。但是你可以使用一些第三方库在你的应用程序中打开PDF。 - M D
你为什么需要在Webview中打开它?你看过这里吗?:https://dev59.com/MHE95IYBdhLWcg3wGqEH - Steven Trigg
不支持webView或嵌入式pdf,仅支持html/text,但您可以使用默认意图阅读。如果您需要代码,请告诉我。 - Rohit Goswami
@RohitGoswami 我已经有代码了,我只是想知道是否可以在Webview中打开它。 - user2699728
我不这么认为。我以前尝试过,但根本不起作用。https://dev59.com/c3_aa4cB1Zd3GeqP4ISg - Rohit Goswami
显示剩余3条评论
2个回答

3

为了在Webview中打开PDF文件,最好通过Google文档服务展示PDF。

WebView webView = (WebView) context.findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.loadUrl("http://drive.google.com/viewerng/viewer?embedded=true&url=" + pdf");

这可能对你有所帮助。

5
我不太喜欢这个解决方案,因为它会打开浏览器应用程序,而如果我在应用程序中嵌入Web视图,那并不是我真正想要做的事情。 - CodyEngel
您可能需要覆盖WebViewClient以使WebView不打开浏览器(重定向可能是原因)。请参见此链接:https://dev59.com/zG855IYBdhLWcg3w75Eu#18921867 - wblaschko
无法工作,打开浏览器。 - Shamsul Arefin
请检查我的修改,它能正常运行。 - Akash Moradiya
但是它显示的消息是:无法预览。 - Abdullah Programmer

-1

不,你不能使用WebView从sdcard显示PDF文件。只能显示HTML文件。

这个任务最简单的解决方案是使用外部的PDF阅读器。这种方法对用户来说相当方便,因为你从Github上的开源代码中创建的“手工制作”的PDF阅读器可能在显示大型PDF文件时会很慢。

public class PDFReader {
public void read(Activity context,  String fileName){
    File appFolder = new File( Environment.getExternalStorageDirectory(), 
        context.getBaseContext().getPackageName() );
    File file = new File(appFolder, fileName);

    Uri path = Uri.fromFile(file);
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setDataAndType(path, "application/pdf");
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    try {
        context.startActivity(intent);
    } 
    catch (ActivityNotFoundException e) {
        Toast.makeText(context, "На устройстве не найдено доступного приложения для отображения PDF!", 
            Toast.LENGTH_SHORT).show();
    }
}

}

5
他希望在WebView中阅读PDF,而不是在默认启动器中。 - Rohit Goswami

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