Para indicar al navegador que el archivo debe verse en el navegador, la respuesta HTTP debe incluir estos encabezados:
Content-Type: application/pdf
Content-Disposition: inline; filename="filename.pdf"
Para descargar el archivo en lugar de verlo:
Content-Type: application/pdf
Content-Disposition: attachment; filename="filename.pdf"
Las comillas alrededor del nombre del archivo son obligatorias si el nombre del archivo contiene caracteres especiales como los filename[1].pdf
que, de lo contrario, pueden dañar la capacidad del navegador para manejar la respuesta.
La forma en que configure los encabezados de respuesta HTTP dependerá de su servidor HTTP (o, si está generando la respuesta PDF desde el código del lado del servidor: su lenguaje de programación del lado del servidor).
Si está usando HTML5 (y supongo que hoy en día todos lo usan), hay un atributo llamado
download
.Por ejemplo,
Aquí
filename
es opcional, pero si se proporciona, tomará este nombre para el archivo descargado.fuente
El tipo correcto es
application/pdf
para PDF, noapplication/force-download
. Esto parece un truco para algunos navegadores heredados. Utilice siempre el tipo MIME correcto si puede.Si tiene control sobre el código del servidor:
header("Content-Disposition", "attachment; filename=myfilename.myextension");
header("Content-Disposition", "inline; filename=myfilename.myextension");
Sin control sobre el código del servidor:
NOTA: Prefiero configurar el nombre de archivo en el lado del servidor, ya que puede tener más información y puede usar un código común.
fuente
Si tiene Apache, agregue esto al
.htaccess
archivo:fuente
Vaya, hubo errores de tipeo en mi publicación anterior.
Si no desea que el navegador solicite al usuario, utilice "en línea" para la tercera cadena en lugar de "archivo adjunto". En línea funciona muy bien. El PDF se muestra inmediatamente sin pedirle al usuario que haga clic en Abrir. He usado "archivo adjunto" y esto le pedirá al usuario que abra, guarde. Intenté cambiar la tuerca de configuración del navegador, no evita el aviso.
fuente
Esto es para ASP.NET MVC
En su página cshtml:
En tu controlador:
fuente
Si bien lo siguiente funciona bien en Firefox, NO funciona en Chrome y navegadores móviles.
Para corregir el error de Chrome y navegadores móviles, haga lo siguiente:
Google PDF Viewer se puede usar así:
fuente
Abra downloads.php desde el archivo raíz.
Luego vaya a la línea 186 y cámbielo a lo siguiente:
fuente
Puede hacer esto de la siguiente manera:
Si el archivo PDF está dentro de alguna carpeta y esa carpeta no tiene permiso para acceder a los archivos de esa carpeta directamente, entonces debe omitir algunas restricciones de acceso a
.htaccess
archivos mediante la configuración de archivos de esta manera:Pero ahora permita solo ciertos archivos necesarios.
He usado este código y funcionó perfectamente.
fuente
Cualquiera de uso
<embed src="file.pdf" />
si incrustar es una opción o mi nuevo complemento, PIFF: https://github.com/terrasoftlabs/piff
fuente
Aquí hay otro método para forzar la visualización de un archivo en el navegador en PHP:
fuente
header
no funciona después de comenzar a generar el cuerpo de la solicitud (y no devuelve una cadena para concatenar en un documento HTML)Simplemente abra Adobe Reader, menú → Editar → Preferencias → Internet , luego cambie al modo de navegador o para obtener instrucciones detalladas sobre diferentes navegadores, intente Mostrar PDF en el navegador | Acrobat, Acrobat Reader .
fuente
Si vincula a un .PDF, se abrirá en el navegador.
Si la casilla no está marcada, debe vincularse a un .zip para forzar la descarga.
Si un .zip no es una opción, use encabezados en PHP para forzar la descarga
fuente