Como exibir um PDF via navegador da web Android sem “baixar” primeiro


88

Existe uma maneira de fazer com que o navegador padrão do Android abra automaticamente um PDF, Word ou outro arquivo típico sem ter que passar pelo processo de download do arquivo e, em seguida, fazer com que o usuário abra o arquivo no aplicativo Downloads ou na barra de notificação ?

Temos uma aplicação web que tem muitos documentos que gostaríamos de incluir e não ter que converter para HTML, mas fazer o usuário baixar o arquivo e abri-lo manualmente não é fácil de treinar os usuários.

No iOS, todos esses arquivos são exibidos em linha no navegador. Gostaria de ter uma maneira de fazer com que o navegador inicie automaticamente os arquivos no Acrobat Reader ou QuickOffice ou em qualquer programa que o usuário tenha para exibi-los.

Alguém conhece uma maneira de fazer isso? Sei que o Google Docs oferece suporte para visualização de PDF, mas as pessoas que usam nosso aplicativo da web podem não ter acesso público à Internet em todos os casos e podem acessar um servidor da web local.


1
Eu nunca vi isso funcionar assim. Dito isso, imagino que você possa criar seu próprio navegador que seja capaz de decodificar e exibir arquivos PDF de maneira adequada. Eu simplesmente não acredito que nenhum dos navegadores populares suporte isso.
— FoamyGuy de

Os seus arquivos PDF estão otimizados para "Visualização rápida da Web"? Do contrário, eles não podem ser exibidos enquanto o download ainda está em andamento - portanto, eles só podem ser baixados e exibidos.
— Robert

Respostas:


66

Você pode abrir PDF no visualizador do Google Docs anexando URL a:

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

Isso abriria o PDF no navegador padrão ou em um WebView.

Uma lista de formatos suportados é fornecida aqui .


4
Isso foi muito útil, obrigado. Não tenho certeza se é 100% necessário, mas provavelmente vale a pena mencionar que o <url de um documento suportado> deve ser codificado por url.
— mason81

1
Isso não funciona para mim ... Ele apenas exibe a página "Ops! Ocorreu um problema ao visualizar este documento" com um botão de download. Nada acontece quando você clica no botão de download.
— Lee Yi Hong

25
O link acima não funcionou para o Chrome no Android, mudei para https://drive.google.com/viewerng/viewer?embedded=true&url=####e funcionou!
— QFDev

2
Olá, parece que o url da resposta já não funciona. Recebo um loop infinito com ele agora no ouvinte webView. A url postada no comentário do QFDev está funcionando.
— Gene Bo de

Isso ainda salva o documento em seu diretório temporário do Android, se bem me lembro.
— Jean-Paul


4

Especificamente, para instalar o plugin pdf.js para firefox, você não usa a app store. Em vez disso, vá para addons.mozilla.org de dentro do mozilla e instale-o de lá. Além disso, para ver se está instalado corretamente, vá para o menu Ferramentas: Complementos (não o url "sobre: ​​plug-ins" como você pode pensar na versão para desktop).

(Nova conta, caso contrário, colocaria isso como um comentário na resposta acima)


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

Eu também precisava disso e os links acima pararam de funcionar, então descobri que funciona com o novo Google Drive:

O Google tem um serviço que cria o link para PDFs que não estão no GDrive: https://docs.google.com/viewer Basta adicionar seu URL e ele cria um link, e o código IFrame (observe com atenção e você verá o padrão e criará links sem este serviço da web)

Além disso, há uma maneira de fazer isso para PDFs armazenados no Google Drive: https://docs.google.com/viewer?srcid=YOUR_GDRIVE_PDF_DOC_ID_HERE&pid=explorer&efh=false&a=v&chrome=false&embedded=true (pode ser um link ou o src URL de um iframe)

Eu testei no Android e ele traz o visualizador de PDF muito bem.


Para mim, se eu não estiver conectado com uma conta do Google, isso me leva a uma página de login. Existe uma maneira de contornar isso e apenas visualizar o pdf?
— h_k

Tente usar o arquivo viewerjs.org viewer.js parece promissor porque é independente do navegador e depende do seu servidor para fazer o trabalho pesado.
— user1493559

2

Infelizmente, o navegador nativo presente em dispositivos Android não suporta este tipo de arquivo. Vamos ver se no 4.0 poderemos fazer isso.


2

Você pode usar isso

webView.loadUrl("https://docs.google.com/viewer?url=" + "url of pdf file"); 

Alguém pode mencionar o motivo do downvoting.
— Akash Bisariya

Pode ser, sua resposta é válida para alguma técnica de programação, e a resposta pode ser apenas o URL, mesmo que eu possa adicioná-lo a uma tag âncora, que já foi mencionado acima
— Siddaram H

@akash talvez você precise adicionar mais explicações. são as regras aqui
— huzain07

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 é importante, obrigado por mencioná-lo
— Beeing Jk

@BeeingJk, setPluginStatefoi descontinuado da API 18 ( stackoverflow.com/questions/19362049/… ).
— CoolMind

@CoolMind o que você mostrou no link é, setPluginsEnabledao invés desetPluginState
— Beeing Jk

@BeeingJk, por favor, abra a página novamente, pressione Ctrl + F, escreva "setPluginState" e pressione Enter.
— CoolMind

@CoolMind ok obrigado, também vi aqui, developer.android.com/reference/android/webkit/… , mas não consegui remover, setPluginStatesenão meu webview não funcionaria
— 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
  • Baixe o arquivo acrobat reader .apk para Android para exibir o arquivo pdf
  • Coloque seus arquivos PDF em um cartão SD
  • Use o snippet de código abaixo

    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
Isso é para um navegador da web, não um aplicativo Android nativo. -1
— ryandawkins
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.