在线(互联网连接)以及离线模式下的PDF查看器

时间:2011-06-14 10:26:15

标签: android

PDF内容可以是在线模式也可以是离线模式,我需要在我自己的自定义布局中显示pdf,因此无法使用Intent。任何建议将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:5)

是的,我们可以在google doc api的帮助下在线上显示pdf内容这里我给出了使用它的代码。 ON线模式

public class ReaderActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

   WebView webView=(WebView)this.findViewById(R.id.WebView01);
        Intent intent = new Intent(Intent.ACTION_VIEW);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setAllowFileAccess(true);
        webView.getSettings().setPluginsEnabled(true);
        webView.loadUrl("https://docs.google.com/viewer?url=http%3A%2F%2Fwww.eli.sdsu.edu%2Fcourses%2Ffall09%2Fcs696%2Fnotes%2FAndroid13Web.pdf");
        //intent.setDataAndType(Uri.parse("https://docs.google.com/viewer?url=---------Your URL");

       }}

用于OFF线模式

        File file = new File(mRealPath);
        Uri path = Uri.fromFile(file);
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intent.setDataAndType(path, getString(R.string.application_type));
        try 
        {
            startActivity(intent);
        } 
        catch (ActivityNotFoundException e) 
        {
            Toast.makeText(FirstTab.this, 
                getString(R.string.no_application_found), 
                Toast.LENGTH_SHORT).show();
        }

注意:在离线模式下,首先你有下载文件格式服务器在sd-card中拥有本地设备这个文件的获取路径并把它放在路径变量的位置然后你得到你的洞问题的答案。

在此代码中,您应该在我的网址中使用您的网址。 我希望这是有帮助的。

答案 1 :(得分:2)

首先在Android中不支持pdf,因此您需要在adob等其他应用中打开,或者如果您想以正确的方式进行操作,那么需要像vudroid和apdfviewer一样制作加载库。

apdfviewer非常好但是没有支持如何编译源代码,实际上所有的lib都在后端使用c ++,所以你需要安装ndk。

Vudroid很慢但你可以轻松编译。

我希望这会对你有所帮助。

但是 有些手机(如Nexus One)预装了Quickoffice版本,因此在将文件保存到SD卡后,可能就像发送相应的Intent一样简单。

 public class OpenPdf extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            Button button = (Button) findViewById(R.id.OpenPdfButton);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    File file = new File("/sdcard/example.pdf");

                    if (file.exists()) {
                        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 {
                            startActivity(intent);
                        } 
                        catch (ActivityNotFoundException e) {
                            Toast.makeText(OpenPdf.this, 
                                "No Application Available to View PDF", 
                                Toast.LENGTH_SHORT).show();
                        }
                    }
                }
            });
        }
    }

答案 2 :(得分:1)

我发现互联网连接模式: - 通过谷歌文档我们可以打开pdf。 但是在Internet离线模式下: - 我们需要使用Intent并通过设备中的任何一个pdf viewer应用程序打开pdf文件。

我们可以在离线模式下做的一件事是,不是在设备中打开多个pdf查看器阅读器的选项,而是选择一个应用程序来打开pdf文件,我们可以用特定的应用程序打开pdf。