O downloadatributo HTML

O downloadatributo HTML

Estou tentando visualizar um arquivo PDF que encontrei online.

Normalmente, quando tento abrir um arquivo PDF, o Firefox o exibe em seu visualizador de PDF padrão (chamado pdfjs, acredito). Este é um comportamento bom e normal.

No entanto...
com este PDF específico que encontrei online, clico no link para sua localização e o Firefox abre a caixa de diálogo de download. Ele descreve o arquivo como um "arquivo binário", embora o arquivo seja um PDF que posso baixar e visualizar nativamente.

Estou assumindo que o servidor web é "não contando" Firefox que este arquivo PDF é, na verdade, um arquivo PDF. Portanto, o Firefox só pode assumir que é um "arquivo binário".

          Isso me estimulou a pensar na questão...

Se eu encontrar esse incômodo novamente, em vez de baixar o arquivo, possoforçaFirefox para abrir um arquivo (online ou não) em seu visualizador de PDF padrão?

Soluções tentadas:

  1. Eu tentei a resposta deComo chamar o visualizador de PDF integrado do Firefox (pdf.js) manualmente?, mas sem sucesso. O Firefox apenas tenta baixar o "arquivo binário".
  2. Adicionei view-source:ao início da localização do PDF (ou seja view-source:https://www.website.com/pdf.pdf), apenas obtenho o texto ASCII bruto exibido no arquivo PDF.

PS: Estou usando o Firefox 48.0.2...
Sim, é antigo....


Como pedido:

Captura de tela dos cabeçalhos de resposta e solicitação

Responder1

Existem várias maneiras pelas quais os sites podem forçar seu navegador a baixar um arquivo em vez de abri-lo diretamente:

O downloadatributo HTML

Este atributo em uma anchortag tentará forçar seu navegador a baixar o arquivo em vez de processá-lo como faria normalmente.

Geralmente isso é usado quando você precisa pegar um nome de documento gerado automaticamente e apresentá-lo como algo legal para o usuário.

Uso:<a href="http://www.website.com/path/to/YourDocument.pdf" download="YourDocument.pdf">...

Ainda não encontrei uma maneira de contornar isso, mas como a verdadeira causa do seu problema está abaixo, não pesquisei completamente...

Cabeçalhos HTTP

Content-Disposition

Um servidor web pode responder a uma solicitação de um documento com o Content-Dispositioncabeçalho para descrever como o navegador deve receber o arquivo.

Content-Disposition: Attachmentdirá ao navegador que ele deve baixar o arquivo, em vez de processá-lo como faria normalmente.

Content-Disposition: Inlinedirá ao navegador que ele pode ser exibido dentro da página da web ou como página da web.

Aqui está um complemento do Firefox que pegará Attachmentcabeçalhos e os substituirá por Inlinecabeçalhos:

https://addons.mozilla.org/en-US/firefox/addon/bypass-forced-download/

Tecnicamente, ele intercepta Content-Disposition: attachmentcabeçalhos e os reescreve rapidamente para arquivos Content-Disposition: inline. Ele também permite que você especifique sites que devem ou não usar essa reescrita.

Tal como acontece com a maioria dos complementos, sua milhagem pode variar.

Content-Type

Um servidor web pode responder a uma solicitação de documento com o Content-Typecabeçalho para descrever o tipo de documento que está retornando ao navegador.

Content-Type: application/octet-streamé definido como "dados binários arbitrários" e basicamente só pode ser baixado como um arquivo; caso contrário, o navegador não saberá o que fazer com eles.

Isto é o que você vê quando seu navegador solicita o arquivo PDF que você está tentando visualizar.

Content-Type: application/pdfé o que você provavelmente precisaria se quisesse visualizar este arquivo em seu navegador, ou pelo menos fazer com que o Firefox entendesse o que é o arquivo e como lidar com ele corretamente.

Aqui está um complemento do Firefox que pode ser configurado para escutar e reescrever Content-Typecabeçalhos com base em seu conteúdo.

Observação: Modificar a forma como o seu navegador lida com os tipos MIME pode ser perigoso.

https://addons.mozilla.org/en-US/firefox/addon/content-type-fixer/

Novamente, este complemento pode ou não funcionar em todos os casos.

informação relacionada