Enlazar un PDF como documento descargable

15 dic 2010, 19:15:16
Vistas: 17.2K
Votos: 6

¿Cómo puedo agregar un enlace a un PDF en el contenido, de modo que se descargue en lugar de abrirse en la ventana del navegador? (He subido el PDF a la biblioteca de medios y puedo insertar el enlace, pero no encuentro una opción para evitar que se abra en el navegador).

Gracias,

Lucy

0
Todas las respuestas a la pregunta 4
3
10

Puedes intentar agregar esto a tu archivo .htaccess:

<FilesMatch "\.(?i:pdf)$">
    # Forzar descarga del archivo
    ForceType application/octet-stream
    Header set Content-Disposition attachment
</FilesMatch>
15 dic 2010 22:56:24
Comentarios

esto es genial y mucho más rápido que todas las otras opciones. ¿Cómo puedo usar múltiples tipos de archivo? ¿Por ejemplo test.notebook con la parte (?i:pdf)?

v3nt v3nt
23 ago 2011 13:35:28

parece que puedes hacerlo así (?i:(pdf|notebook))

Sébastien Méric Sébastien Méric
29 ago 2011 02:04:18

sí - ¡al final lo descubrí! Gracias Sébastien...

v3nt v3nt
29 ago 2011 16:04:10
3

Un archivo PDF se guardará con un tipo mime de application/pdf, por lo que si tu tema tiene un archivo de plantilla application.php o pdf.php que fuerza la descarga (o si verificas el tipo mime en tu plantilla attachment.php), puedes forzar una descarga.

Un archivo pdf.php construido así en tu tema debería funcionar:

<?php  if (have_posts()) : while (have_posts()) : the_post();

$pdf_title = $post->post_title;
$uploads_dir = wp_upload_dir();
$attachment_src = get_post_meta( $post->ID, '_wp_attached_file', true );
$pdf_src = path_join( $uploads_dir['path'], $attachment_src );


 header("Pragma: public"); // requerido
 header("Expires: 0");
 header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
 header("Cache-Control: private",false); // requerido para ciertos navegadores
 header("Content-Type: application/pdf");
 header("Content-Disposition: attachment; filename=\"".$pdf_title."\";" );
 header("Content-Transfer-Encoding: binary");
 header("Content-Length: ".filesize($pdf_src));
 ob_clean();
 flush();
 readfile("$pdf_src");


endwhile; endif;

?>

(Edición: Debo mencionar que para que esto funcione, cuando insertes el archivo en tu publicación a través del cargador de medios, debes seleccionar URL de la publicación en lugar de URL del archivo en el campo URL del enlace antes de insertarlo en tu publicación. Un enlace a un nombre de archivo seguirá las preferencias del navegador, pero al enlazar al enlace de la publicación de WP, puedes controlar su comportamiento.)

16 dic 2010 20:36:52
Comentarios

Nunca deberías usar el guid de la publicación como URL. Es una URL solo porque es una cadena única; podría cambiar con la misma facilidad.

John P Bloch John P Bloch
17 dic 2010 23:47:24

Gracias, cambié mi función para que utilice los metadatos '_wp_attached_file'.

goldenapples goldenapples
18 dic 2010 06:18:01

Alternativamente, puedes encontrar la ruta al PDF de la siguiente manera: $pdf_src = get_attached_file($post->ID ); $bytes = filesize( $pdf_src );

Dipesh KC Dipesh KC
29 abr 2013 15:39:28
1

En realidad, eso depende completamente del navegador. Algunos navegadores abrirán el PDF en la ventana usando un lector de PDF integrado (la mayoría usa el complemento de Adobe, Google Chrome tiene el suyo propio). Sin embargo, si falta el complemento, el navegador intentará descargar el archivo en su lugar.

Tu opción más segura es agregar instrucciones en la página para que el usuario haga clic derecho y seleccione "guardar como".

Si te preocupa que los usuarios no puedan volver a la página después de hacer clic en un enlace, agrega target="_blank" al enlace y esto forzará al navegador a abrir el enlace en una nueva pestaña o ventana. A veces, esto también puede ser suficiente para activar una descarga en lugar de abrir el archivo.

Ejemplo: <a href="http://site.url/document.pdf" target="_blank">Descargar PDF</a>.

15 dic 2010 19:22:07
Comentarios

En realidad, "forzar una descarga" depende completamente de los encabezados de respuesta HTTP enviados desde el servidor; no del navegador. Sin embargo, si un PDF se puede mostrar en el navegador depende del navegador/plugins.

MrWhite MrWhite
24 ene 2015 14:34:18
0

Solo usa el atributo download de la etiqueta a: https://www.w3schools.com/tags/att_a_download.asp

4 mar 2021 01:48:13