如何通过Android网络浏览器显示PDF而不先“下载”


88

有没有一种方法可以使库存的Android浏览器自动打开PDF,Word或其他典型文件,而无需执行下载文件的过程,然后让用户从“下载”应用程序或“通知”栏中打开文件?

我们有一个Web应用程序,其中包含许多我们想包含的文档,而不必转换为HTML,但是要让用户下载文件并手动打开它,培训用户并不容易。

在iOS上,这些文件全部在浏览器中内联显示。我想要一种使浏览器将文件自动启动到Acrobat Reader或QuickOffice或用户必须显示它们的程序的方法。

有人知道这样做的方法吗?我知道Google文档具有某些PDF查看支持,但是使用我们的Web应用程序的人可能无法在所有情况下都具有公共Internet访问权限,并且可能会访问本地Web服务器。


1
我从未见过这种方式。话虽这么说,我想您可以创建自己的浏览器,该浏览器能够解码和正确显示pdf文件。我只是不相信任何流行的浏览器都支持此功能。
FoamyGuy 2011年

您的PDF文件是否针对“快速Web视图”进行了优化?如果不是,则在下载仍在进行时无法显示它们-因此只能下载然后显示它们。
罗伯特

Answers:


66

您可以通过将URL附加到以下内容来在Google文档查看器中打开PDF:

http://docs.google.com/gview?embedded=true&url=<url of a supported doc>

这将在默认浏览器或WebView中打开PDF。

此处列出了支持的格式。


4
这非常有帮助,谢谢。我不确定这是否是100%必需的,但值得一提的是应该对<url of support doc>进行urlencoded。
mason81

1
这对我不起作用...它仅显示带有下载按钮的页面“糟糕!预览此文档时出现问题”。当您单击下载按钮时,没有任何反应。
Lee Yi Hong

25
上面的链接在Android上的Chrome上无法正常工作,我切换到该链接,https://drive.google.com/viewerng/viewer?embedded=true&url=####然后完成了工作!
QFDev 2015年

2
嗨,答案中的网址似乎不再起作用。我现在在webView侦听器中遇到了一个无限循环。QFDev在评论中张贴的网址正在工作。
Gene Bo

如果我没记错的话,这仍然会将文档保存到您的temp android目录中。
Jean-Paul


4

具体来说,要为Firefox安装pdf.js插件,请不要使用应用商店。而是从mozilla内转到addons.mozilla.org并从那里安装它。另外,要查看安装是否正确,请转到菜单工具:附加组件(而不是您从台式机版本可能会想到的“ about:plugins” URL)。

(新帐户,否则我将其作为对以上答案的评论)


4
String format = "https://drive.google.com/viewerng/viewer?embedded=true&url=%s";
String fullPath = String.format(Locale.ENGLISH, format, "PDF_URL_HERE");
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(fullPath));
startActivity(browserIntent);

3

我也需要这样做,并且上面的链接也停止了工作,因此这是我发现可以在新版Google云端硬盘上使用的功能:

Google提供了一项为PDF不在GDrive中创建链接的服务:https : //docs.google.com/viewer 只需添加您的URL并创建一个链接和IFrame代码(仔细查看,您将看到该模式并创建链接没有此网络服务)

此外,还有一种方法可以对存储在Google云端硬盘中的PDF进行处理:https : //docs.google.com/viewer?srcid=YOUR_GDRIVE_PDF_DOC_ID_HERE&pid=explorer&efh=false& a =v&chrome=false&embedded=true(这可以是链接,也可以是src iframe的网址)

我已经在Android上进行了测试,它很好地显示了PDF查看器。


对我来说,如果我当前未使用Google帐户登录,那么它将带我到登录页面。有没有一种方法可以绕过此方法而仅查看pdf?
h_k 2014年

尝试使用viewerjs.org viewer.js文件看起来很有希望,因为它是独立于浏览器的,并且依靠您的服务器来完成。
user1493559 '16



2
  Try this, worked for me.

    WebView view = (WebView) findViewById(R.id.yourWebView);

    view.getSettings().setJavaScriptEnabled(true);
    view.getSettings().setPluginState(WebSettings.PluginState.ON);
    view.loadUrl("http://docs.google.com/gview?embedded=true&url="
                  +"your document link(pdf,doc,docx...etc)");

setPluginState ON是非常重要的,谢谢提它
Beeing JK

@BeeingJksetPluginState从API 18(stackoverflow.com/questions/19362049/…)起已弃用。
CoolMind

@CoolMind您在链接中显示的内容setPluginsEnabled不是setPluginState
Beeing Jk,

@BeeingJk,请再次打开页面,按Ctrl + F,输入“ setPluginState”,然后按Enter。
CoolMind

@CoolMind好的,谢谢,我也在这里看到了它,developer.android.com / reference / android / webkit /… ,但是我无法删除setPluginState其他内容,因此我的webview无法正常工作
Beeing Jk

0
public class MainActivity extends AppCompatActivity {

    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openURL("http://docs.google.com/viewer?url=" + " your pdf link ");
            }
        });
    }

    private void openURL(String s) {
        Uri uri = Uri.parse(s);
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri,"text/html");
        startActivity(intent);
    }
}

-4
  • 下载适用于Android的Acrobat Reader .apk文件以显示pdf文件
  • 将您的pdf文件放在SD卡上
  • 使用下面的代码片段

    File file= new File("/sdcard/test.pdf");
    Uri path=Uri.fromFile(file);
    Intent i =new Intent(Intent.ACTION_VIEW);
    i.setDataAndType(path,"application/pdf");
    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(i);
    

4
这是用于Web浏览器,而不是本机android应用程序。-1
ryandawkins 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.