Existe uma maneira de forçar a abertura de arquivos PDF no navegador quando a opção "Exibir PDF no navegador" está desmarcada?
Tentei usar a tag embed e um iframe, mas ele só funciona quando essa opção está marcada.
O que eu posso fazer?
Para indicar ao navegador que o arquivo deve ser exibido no navegador, a resposta HTTP deve incluir estes cabeçalhos:
Content-Type: application/pdf
Content-Disposition: inline; filename="filename.pdf"
Para que o arquivo seja baixado em vez de visualizado:
Content-Type: application/pdf
Content-Disposition: attachment; filename="filename.pdf"
As aspas ao redor do nome do arquivo serão necessárias se o nome do arquivo contiver caracteres especiais, como os filename[1].pdf
que de outra forma podem prejudicar a capacidade do navegador de lidar com a resposta.
Como você define os cabeçalhos de resposta HTTP dependerá do seu servidor HTTP (ou, se você estiver gerando a resposta em PDF a partir do código do servidor: sua linguagem de programação do servidor).
Se você estiver usando HTML5 (e eu acho que hoje em dia todo mundo usa isso), há um atributo chamado
download
.Por exemplo,
Aqui
filename
é opcional, mas se fornecido, esse nome será usado para o arquivo baixado.fonte
O tipo correto é
application/pdf
para PDF, nãoapplication/force-download
. Parece um hack para alguns navegadores herdados. Sempre use o tipo correto de mimet, se puder.Se você tiver controle sobre o código do servidor:
header("Content-Disposition", "attachment; filename=myfilename.myextension");
header("Content-Disposition", "inline; filename=myfilename.myextension");
Sem controle sobre o código do servidor:
NOTA: Prefiro definir o nome do arquivo no servidor, pois você pode ter mais informações e usar código comum.
fonte
Se você possui o Apache, adicione-o ao
.htaccess
arquivo:fonte
Ups! Ocorreram erros de digitação na minha postagem anterior.
Se você não deseja que o navegador solicite ao usuário, use "inline" para a terceira string em vez de "anexo". Inline funciona muito bem. O PDF é exibido imediatamente sem solicitar ao usuário que clique em Abrir. Eu usei "anexo" e isso solicitará ao usuário Abrir, Salvar. Tentei alterar a porca de configuração do navegador, mas isso não impede o prompt.
fonte
Isto é para o ASP.NET MVC
Na sua página cshtml:
No seu controlador:
fonte
Embora o seguinte funcione bem no Firefox, ele NÃO funciona nos navegadores Chrome e Mobile.
Para corrigir o erro do Chrome e dos navegadores móveis, faça o seguinte:
O Google PDF Viewer pode ser usado da seguinte maneira:
fonte
Abra o downloads.php no arquivo raiz.
Em seguida, vá para a linha 186 e altere-a para o seguinte:
fonte
Você pode fazer isso da seguinte maneira:
Se o arquivo PDF estiver dentro de alguma pasta e essa pasta não tiver permissão para acessar arquivos nessa pasta diretamente, você precisará ignorar algumas restrições de acesso a
.htaccess
arquivos usando a configuração de arquivos desta maneira:Mas agora permita apenas alguns arquivos necessários.
Eu usei esse código e ele funcionou perfeitamente.
fonte
Qualquer uso
<embed src="file.pdf" />
se a incorporação for uma opção ou meu novo plug-in, PIFF: https://github.com/terrasoftlabs/piff
fonte
Aqui está outro método de forçar a visualização de um arquivo no navegador em PHP:
fonte
header
não funciona depois que você começou a produzir o corpo da solicitação (e não retorna um string para concatenar em um documento HTML)Basta abrir o Adobe Reader, menu → Editar → Preferências → Internet e , em seguida, mudar para o modo navegador ou para obter instruções detalhadas sobre diferentes navegadores, tente Exibir PDF no navegador | Acrobat, Acrobat Reader .
fonte
Se você vincular a um arquivo .PDF, ele será aberto no navegador.
Se a caixa estiver desmarcada, ela deve ser vinculada a um .zip para forçar o download.
Se um .zip não for uma opção, use os cabeçalhos no PHP para forçar o download
fonte