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.